Giúp mình code tạo mục lục trong excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ngaykhongem1

Thành viên chính thức
Tham gia
14/4/12
Bài viết
50
Được thích
2
Hi mọi người,
Mình có 1 file excel có 2 sheet, trong mỗi sheet có nhiều bảng, bắt đầu mỗi bảng là tên bảng (Bang 1, Bang 2, Bang 3...) Mong mọi người giúp mình sao cho khi chạy xong macro chương trình sẽ tạo ra mục lục chứa trong 1 sheet khác, mục lục này sẽ chia thành 2 cột tương ứng với 2 sheet đã có. Bắt đầu mỗi cột là tên của sheet đó, tiếp theo sau là liệt kê danh sách các bảng ( Bang 1, Bang 2, Bảng 3,...) và khi mình click vào tên của bảng nào trong sheet mục lục thì chương trình sẽ trả về vị đúng vị trí của bảng đó. Chi tiết xem giúp mình trong file đính kèm (Shett 1 là kết quả mình mong muốn)
Thanks tất cả.
 

File đính kèm

Hi mọi người,
Mình có 1 file excel có 2 sheet, trong mỗi sheet có nhiều bảng, bắt đầu mỗi bảng là tên bảng (Bang 1, Bang 2, Bang 3...) Mong mọi người giúp mình sao cho khi chạy xong macro chương trình sẽ tạo ra mục lục chứa trong 1 sheet khác, mục lục này sẽ chia thành 2 cột tương ứng với 2 sheet đã có. Bắt đầu mỗi cột là tên của sheet đó, tiếp theo sau là liệt kê danh sách các bảng ( Bang 1, Bang 2, Bảng 3,...) và khi mình click vào tên của bảng nào trong sheet mục lục thì chương trình sẽ trả về vị đúng vị trí của bảng đó. Chi tiết xem giúp mình trong file đính kèm (Shett 1 là kết quả mình mong muốn)
Thanks tất cả.

Bạn yêu cầu tạo Link và tổng hợp dữ liệu ở các sheet như đã yêu cầu mà đưa File không có tên sheet và dữ liệu theo dõi từng ngày ai biết đường mà giúp bạn.
 
Upvote 0
Hi mọi người,
Mình có 1 file excel có 2 sheet, trong mỗi sheet có nhiều bảng, bắt đầu mỗi bảng là tên bảng (Bang 1, Bang 2, Bang 3...) Mong mọi người giúp mình sao cho khi chạy xong macro chương trình sẽ tạo ra mục lục chứa trong 1 sheet khác, mục lục này sẽ chia thành 2 cột tương ứng với 2 sheet đã có. Bắt đầu mỗi cột là tên của sheet đó, tiếp theo sau là liệt kê danh sách các bảng ( Bang 1, Bang 2, Bảng 3,...) và khi mình click vào tên của bảng nào trong sheet mục lục thì chương trình sẽ trả về vị đúng vị trí của bảng đó. Chi tiết xem giúp mình trong file đính kèm (Shett 1 là kết quả mình mong muốn)
Thanks tất cả.
Bài này ngộ quá, để dò bảng cho chính xác các tiêu đề bảng phải đúng như trong bài của bạn nhé
Còn phần chọn ở sheet1 rồi nhảy qua các sheet kia bạn xem thử có gì bàn sau
Thân
 

File đính kèm

Upvote 0
Bạn yêu cầu tạo Link và tổng hợp dữ liệu ở các sheet như đã yêu cầu mà đưa File không có tên sheet và dữ liệu theo dõi từng ngày ai biết đường mà giúp bạn.
Đưa file ko có tên sheet là sao bạn?? trong file mình vẫn có sheet 2 và sheet 3 mà? Còn dữ liệu theo dõi từng ngày như bạn nói thì cái đó ko quan trọng đâu, mình chỉ cần chạy macro xong chương trình sẽ tạo ra 1 sheet mới vd sheet 4 chẳng hạn. Trong sheet 4 này sẽ liệt kê ra tên các bảng có trong sheet 2 & 3, khi click vào tên bảng đó thì sẽ chuyển đến ngay vị trí bảng đó.
 
Upvote 0
Bài này ngộ quá, để dò bảng cho chính xác các tiêu đề bảng phải đúng như trong bài của bạn nhé
Còn phần chọn ở sheet1 rồi nhảy qua các sheet kia bạn xem thử có gì bàn sau
Thân
Gần được rồi bạn ơi, bạn giúp mình thêm... Trong sheet1( mục lục) khi minh click vào tên của sheet 2 hoặc sheet 3 thì sẽ trả về ô A1 của sheet đó, với lại dữ liệu trong sheet1 lúc này thụt xuống vài dòng(để trống 3-4 dòng đầu) để mình ghi tiêu đề ấy mà.
Thanks bạn!!!
 
Upvote 0
Gần được rồi bạn ơi, bạn giúp mình thêm... Trong sheet1( mục lục) khi minh click vào tên của sheet 2 hoặc sheet 3 thì sẽ trả về ô A1 của sheet đó, với lại dữ liệu trong sheet1 lúc này thụt xuống vài dòng(để trống 3-4 dòng đầu) để mình ghi tiêu đề ấy mà.
Thanks bạn!!!
Trong sheet1( mục lục) khi minh click vào tên của sheet 2 hoặc sheet 3 thì sẽ trả về ô A1 của sheet đó,
Cái này trong bài trước đâu có đề cập tới đâu Trời
với lại dữ liệu trong sheet1 lúc này thụt xuống vài dòng(để trống 3-4 dòng đầu) để mình ghi tiêu đề ấy mà.
Thụt 3 là 3 mà 4 là 4 chứ bạn, mà cứ ......thụt đi, thụt xong rồi thì đưa cái file đã thụt lên đây nhé
Nói đùa thôi, bài dạng này code phải duyệt qua nhiều sheet, trong từng sheet nó phải dò tìm, gán dữ liệu......nên phải khai báo địa chỉ chính xác, trong file thật của bạn có bao nhiêu sheet ? cấu trúc như thế nào ? bạn làm một file giống như thật gởi lên cho dễ làm
Thân
 
Upvote 0
với lại dữ liệu trong sheet1 lúc này thụt xuống vài dòng(để trống 3-4 dòng đầu) để mình ghi tiêu đề ấy mà.
Thanks bạn!!!

Thụt xuống 5 dòng thì sửa lại cái này
PHP:
Sheets("sheet1").Cells(1, A).Resize(M) = Application.WorksheetFunction.Transpose(Mg)
Sửa số 1 thành 5 là được
PHP:
Sheets("sheet1").Cells(5, A).Resize(M) = Application.WorksheetFunction.Transpose(Mg)
thân!
 
Upvote 0
@concogia:
//Trong sheet1( mục lục) khi minh click vào tên của sheet 2 hoặc sheet 3 thì sẽ trả về ô A1 của sheet đó-- Cái này bài trước đúng là ko có đề cập đến nên bây h mình thấy thiếu chức năng đó nên nhờ bạn giúp mình cái này luôn với.
--Bạn giúp mình thụt xuống 3 dòng đi để mình viết cái tựa đề cho sheet Vd: viết chữ mục lục vào đầu sheet đó để ng` dùng biết đó là trang mục lục...Trong file thật của mình có 2 sheet thôi nhưng bạn code giúp mình sao cho khi nào ta thêm 1 sheet mới nữa thì chương trình vẫn chạy ra được mục lục của sheet ta vừa thêm đó luôn.
-Cấu trúc file thật của mình thì vẫn như cũ bạn ạ, mỗi bảng đều bắt đầu = tên bảng (Bang 1, Bang 2, ...) nhưng có điều là dữ liệu của mình đến hàng ngàn bảng lận nên phải viết macro cho máy nó tự chạy chứ làm = tay thì ko biết khi nào mới xong.
Thanks bạn!
 
Upvote 0
Thụt xuống 5 dòng thì sửa lại cái này
PHP:
Sheets("sheet1").Cells(1, A).Resize(M) = Application.WorksheetFunction.Transpose(Mg)
Sửa số 1 thành 5 là được
PHP:
Sheets("sheet1").Cells(5, A).Resize(M) = Application.WorksheetFunction.Transpose(Mg)
thân!
Khi mình sửa thụt xuống như cách bạn chỉ thì khi click vào mục lục nó ko tự chuyển sang vị trí sheet khác được nữa, nhưng dù sao cũng thanks bạn rất nhiều
 
Upvote 0
Khi mình sửa thụt xuống như cách bạn chỉ thì khi click vào mục lục nó ko tự chuyển sang vị trí sheet khác được nữa, nhưng dù sao cũng thanks bạn rất nhiều
Code anh Cò viết quá đẹp rồi nhưng nếu muốn sửa theo ý của bạn thì phải thêm tí gia vị nữa
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Vung, A, B, iHang, VungDo, r
    On Error Resume Next
    Set Vung = Intersect([A5].CurrentRegion, Target)
        If Vung Is Nothing Or ActiveCell.Row < 5 Or ActiveCell = "" Then
            MsgBox ("Chon tam bay tam ba, chon trong vung co du lieu di ban")
            Exit Sub
        Else
            r = ActiveCell.Row
            B = ActiveCell
            A = Cells(5, ActiveCell.Column)
              Sheets(A).Select
              If r > 5 Then
                Set VungDo = Sheets(A).Range(Sheets(A).[a1], Sheets(A).[A10000].End(xlUp))
                    iHang = Application.WorksheetFunction.Match(B, VungDo, 0)
                    Sheets(A).Cells(iHang, 1).Select
              Else
                ActiveSheet.[a1].Select
              End If
              
        End If
End Sub
 
Upvote 0
Code anh Cò viết quá đẹp rồi nhưng nếu muốn sửa theo ý của bạn thì phải thêm tí gia vị nữa
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Vung, A, B, iHang, VungDo, r
    On Error Resume Next
    Set Vung = Intersect([A5].CurrentRegion, Target)
        If Vung Is Nothing Or ActiveCell.Row < 5 Or ActiveCell = "" Then
            MsgBox ("Chon tam bay tam ba, chon trong vung co du lieu di ban")
            Exit Sub
        Else
            r = ActiveCell.Row
            B = ActiveCell
            A = Cells(5, ActiveCell.Column)
              Sheets(A).Select
              If r > 5 Then
                Set VungDo = Sheets(A).Range(Sheets(A).[a1], Sheets(A).[A10000].End(xlUp))
                    iHang = Application.WorksheetFunction.Match(B, VungDo, 0)
                    Sheets(A).Cells(iHang, 1).Select
              Else
                ActiveSheet.[a1].Select
              End If
              
        End If
End Sub
Bạn ơi bạn test thử chưa vậy? sao mình copy code bạn viết vào nó ko thụt xuống mà click vào mục lục nó lại không chuyển wa sheet khác được nữa, bạn xem giúp mình nhé. thanks bạn.
 
Upvote 0

File đính kèm

Upvote 0
Code ngắn nên lẽ ra không cần file
OH vì bài hướng dẫn trước của bạn thiếu phần sau nên mình chạy ko dc.
Private Sub Worksheet_Activate()[a:b].ClearContents
TaoBang
End Sub
Mình đã chỉnh sửa lại file gốc của mình và chạy ok rồi, thanks mọi người rất nhiều.
 
Upvote 0
Code anh Cò viết quá đẹp rồi nhưng nếu muốn sửa theo ý của bạn thì phải thêm tí gia vị nữa
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Vung, A, B, iHang, VungDo, r
    On Error Resume Next
    Set Vung = Intersect([A5].CurrentRegion, Target)
        If Vung Is Nothing Or ActiveCell.Row < 5 Or ActiveCell = "" Then
            MsgBox ("Chon tam bay tam ba, chon trong vung co du lieu di ban")
            Exit Sub
        Else
            r = ActiveCell.Row
            B = ActiveCell
            A = Cells(5, ActiveCell.Column)
              Sheets(A).Select
              If r > 5 Then
                Set VungDo = Sheets(A).Range(Sheets(A).[a1], Sheets(A).[A10000].End(xlUp))
                    iHang = Application.WorksheetFunction.Match(B, VungDo, 0)
                    Sheets(A).Cells(iHang, 1).Select
              Else
                ActiveSheet.[a1].Select
              End If
              
        End If
End Sub

- Anh quanghai1969 ơi, cho em hỏi: làm sao dời dữ liệu mục lục ở sheet 1 qua cột khác ạ, ví dụ dữ liệu ở sheet 1 sau khi tạo bảng là A5 trở đi, em muốn chuyển qua cột D5 trở đi thì phải sửa lại như thế nào ạ?
- Từ khóa để tạo mục lục là từ "bảng" , em muốn thêm từ khác vào thì phải làm sao anh. vd: "bảng" hoặc "phần" , "đoạn". em muốn cả 3 từ khóa trên đều được đưa vào mục lục thì phải làm ntn. mong anh chỉ thêm một số phần trong đoạn code để em có thể tùy biến dữ liệu được không (note code). Cảm ơn anh nhiều.
 
Upvote 0
Bài này ngộ quá, để dò bảng cho chính xác các tiêu đề bảng phải đúng như trong bài của bạn nhé
Còn phần chọn ở sheet1 rồi nhảy qua các sheet kia bạn xem thử có gì bàn sau
Thân


Bác concogia cho em hỏi cách sửa vị trí xuất dữ liệu mục lục ra cột khác với ạ, ở đây bắt đầu bằng cột A, em muốn bắt đầu bằng cột D và thụt xuống 5 hàng. Em có thể thêm từ khóa vào cùng với từ "bảng" không? ví dụ như: "phần" , "chương" được không ạ? Bác note vào code và tô đậm nó lên dùm để em dễ nhìn với. Cảm ơn bác nhiều.
 
Upvote 0
- Anh quanghai1969 ơi, cho em hỏi: làm sao dời dữ liệu mục lục ở sheet 1 qua cột khác ạ, ví dụ dữ liệu ở sheet 1 sau khi tạo bảng là A5 trở đi, em muốn chuyển qua cột D5 trở đi thì phải sửa lại như thế nào ạ?
- Từ khóa để tạo mục lục là từ "bảng" , em muốn thêm từ khác vào thì phải làm sao anh. vd: "bảng" hoặc "phần" , "đoạn". em muốn cả 3 từ khóa trên đều được đưa vào mục lục thì phải làm ntn. mong anh chỉ thêm một số phần trong đoạn code để em có thể tùy biến dữ liệu được không (note code). Cảm ơn anh nhiều.
Nếu có thể thì cứ tạo 1 chủ đề mới và gởi file lên mọi người sẽ xem giúp bạn. Không có file thì bạn mô tả kiểu gì cũng khó làm đúng yêu cầu
 
Upvote 0
Hỗ trợ viết tiếp macro liên kết trong các Sheet.

Chào các bạn,
Lúc trước mình có đăng 1 bài về cái này rồi nay có thêm 1 yêu cầu nữa mong mọi người hỗ trợ giúp, chi tiết mình để trong file đính kèm. Rất mong mọi người giúp mình hoàn tất code này.
Thanks
 

File đính kèm

Upvote 0
Chào các bạn,
Lúc trước mình có đăng 1 bài về cái này rồi nay có thêm 1 yêu cầu nữa mong mọi người hỗ trợ giúp, chi tiết mình để trong file đính kèm. Rất mong mọi người giúp mình hoàn tất code này.
Thanks

Ai giúp mình với!!!!!.....
 
Lần chỉnh sửa cuối:
Upvote 0
Code chuyển sheet trong excel.

Hi mọi người,
Em có 1 file excel có 3 sheet. Sheet2 & 3 là chứa data. Trong sheet có nhiều bảng, tên của mỗi bảng bắt đầu bằng chữ "Bang". Em muốn viết code để kế bên ô tên bảng tự sinh ra 1 cái nút hay 1 cái liên kết gì đó để khi click vào sẽ đi đến ô A1 của Sheet1. Mong mọi người giúp đỡ.

Mong admin đừng có move bài viết này vào mấy cái topic em đăng lúc trước vì topic đó nhiều comment quá nên mọi người khó theo dõi lắm, thanks nhiều ạ.
 

File đính kèm

Upvote 0
Hi mọi người,
Em có 1 file excel có 3 sheet. Sheet2 & 3 là chứa data. Trong sheet có nhiều bảng, tên của mỗi bảng bắt đầu bằng chữ "Bang". Em muốn viết code để kế bên ô tên bảng tự sinh ra 1 cái nút hay 1 cái liên kết gì đó để khi click vào sẽ đi đến ô A1 của Sheet1. Mong mọi người giúp đỡ.

Mong admin đừng có move bài viết này vào mấy cái topic em đăng lúc trước vì topic đó nhiều comment quá nên mọi người khó theo dõi lắm, thanks nhiều ạ.

Bạn xem file đính kèm nhé.
 

File đính kèm

Upvote 0
Bạn ơi, ý mình là chỗ nào có chữ Bảng là kế bên sinh ra 1 nút quay về Sheet1 chứ không phải 1 Sheet chỉ có 1 nút trở về bạn ơi.
 
Upvote 0
Bạn ơi, ý mình là chỗ nào có chữ Bảng là kế bên sinh ra 1 nút quay về Sheet1 chứ không phải 1 Sheet chỉ có 1 nút trở về bạn ơi.

Tại sao bạn không làm HYPERLINK

cả đối với trường hợp ở sheet1 khi muốn liên kết với các bảng (không cần CODE)
 
Lần chỉnh sửa cuối:
Upvote 0
Tại sao bạn không làm HYPERLINK

Trong 1 sheet dữ liệu có cả hàng ngàn bảng nên mình muốn kế bên mỗi bảng có 1 nút để trở về Sheet 1 cho nó nhanh ( nếu click trực tiếp vào sheet1 để quay lại cũng được nhưng trong trường hợp file có nhiều sheet thì sheet1 có thể bị ẩn hoặc thu nhỏ lại ko click trực tiếp được). Nếu dùng hyperlink thì làm thủ công bằng tay thì dữ liệu cả ngàn bảng như vậy thì làm rất lâu.
 
Upvote 0
Trong 1 sheet dữ liệu có cả hàng ngàn bảng nên mình muốn kế bên mỗi bảng có 1 nút để trở về Sheet 1 cho nó nhanh ( nếu click trực tiếp vào sheet1 để quay lại cũng được nhưng trong trường hợp file có nhiều sheet thì sheet1 có thể bị ẩn hoặc thu nhỏ lại ko click trực tiếp được). Nếu dùng hyperlink thì làm thủ công bằng tay thì dữ liệu cả ngàn bảng như vậy thì làm rất lâu.

Nếu bạn cố tình thế thì

tại tab sheet2 nháy phải chọn view code rùi dán đoan code sau vào
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo 1
    Application.EnableEvents = False
    If UCase(Left(Target.Value, 4)) Like "BANG" Then Sheet1.Activate: [A5].Select
1:  Application.EnableEvents = True
End Sub
khi này chỉ cần chọn vào ô có tiêu đề bắt đầu là chữ Bang là trở về sheet1!A5 (néu thích thì thay thành A1 ở code trên thì phải bỏ ẩn dòng A1)

tương tự cho sheet3,....

Code mới test với trường hợp sheet1 không ẩn
 
Lần chỉnh sửa cuối:
Upvote 0
Trong 1 sheet dữ liệu có cả hàng ngàn bảng nên mình muốn kế bên mỗi bảng có 1 nút để trở về Sheet 1 cho nó nhanh ( nếu click trực tiếp vào sheet1 để quay lại cũng được nhưng trong trường hợp file có nhiều sheet thì sheet1 có thể bị ẩn hoặc thu nhỏ lại ko click trực tiếp được). Nếu dùng hyperlink thì làm thủ công bằng tay thì dữ liệu cả ngàn bảng như vậy thì làm rất lâu.
Phải nói là code của bạn mhung12005 hay cực kỳ!
@bạn ngaykhongem1 : theo mình nghĩ tai sao ban không làm hàng đầu tiên cố định, trên đó có gì đó nhấn vào (dùng hyperlink hay code VBA gì đó) để chuyển về sheet1 --> như thế đơn giản mà không tốn công nữa!!!
 
Upvote 0
Hi mọi người,
Em có 1 file excel có 3 sheet. Sheet2 & 3 là chứa data. Trong sheet có nhiều bảng, tên của mỗi bảng bắt đầu bằng chữ "Bang". Em muốn viết code để kế bên ô tên bảng tự sinh ra 1 cái nút hay 1 cái liên kết gì đó để khi click vào sẽ đi đến ô A1 của Sheet1. Mong mọi người giúp đỡ.

Mong admin đừng có move bài viết này vào mấy cái topic em đăng lúc trước vì topic đó nhiều comment quá nên mọi người khó theo dõi lắm, thanks nhiều ạ.

Lần này tôi dời bài của bạn vào đúng chổ mà bạn đã hỏi
Lần sau nếu còn "quăng bài" hỏi lung tung với cùng 1 chủ đề ---> Tôi xóa luôn đừng trách nhé
(Bạn đã ít nhất có 3 lần gửi bài hỏi ở 3 nơi với cùng 1 chủ đề rồi đấy)
 
Upvote 0
Nếu bạn cố tình thế thì

tại tab sheet2 nháy phải chọn view code rùi dán đoan code sau vào
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo 1
    Application.EnableEvents = False
    If UCase(Left(Target.Value, 4)) Like "BANG" Then Sheet1.Activate: [A5].Select
1:  Application.EnableEvents = True
End Sub
khi này chỉ cần chọn vào ô có tiêu đề bắt đầu là chữ Bang là trở về sheet1!A5 (néu thích thì thay thành A1 ở code trên thì phải bỏ ẩn dòng A1)

tương tự cho sheet3,....

Code mới test với trường hợp sheet1 không ẩn

Bạn ơi cho mình hỏi: sao khi mình dùng code này dán vào sheet2 thì sheet2 quay lại sheet1 ok. Nhưng sao từ Sheet1 muốn qua mấy sheet khác là đoạn code lúc trước có sẵn trong file của mình lúc trước nó bị vô hiệu hóa rồi, nó ko chịu thực thi câu lệnh nữa.
 
Upvote 0
Trong 1 sheet dữ liệu có cả hàng ngàn bảng nên mình muốn kế bên mỗi bảng có 1 nút để trở về Sheet 1 cho nó nhanh ( nếu click trực tiếp vào sheet1 để quay lại cũng được nhưng trong trường hợp file có nhiều sheet thì sheet1 có thể bị ẩn hoặc thu nhỏ lại ko click trực tiếp được). Nếu dùng hyperlink thì làm thủ công bằng tay thì dữ liệu cả ngàn bảng như vậy thì làm rất lâu.
Híc
Trong 1 sheet dữ liệu có cả hàng ngàn bảng nên mình muốn kế bên mỗi bảng có 1 nút để trở về Sheet 1.....
vậy phải làm ............hàng ngàn cái nút ?????+-+-+-++-+-+-++-+-+-+
Theo mình, cứ viết tý code, tạo phím tắt, ở đâu cũng về sheet1 được
Trong bài bạn bấm Ctrl + W để về sheet 1 ( sửa code trong sheet 1 tý tẹo, bỏ được vài thứ nữa nhưng làm biếng quá--=----=----=--)
Thân
 

File đính kèm

Upvote 0

Bài viết mới nhất

Back
Top Bottom