Code Lấy Dữ Liệu (1 người xem)

Liên hệ QC

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

letinnghia

Thành viên hoạt động
Tham gia
20/4/11
Bài viết
183
Được thích
20
Các bạn vui lòng viết code giúp mình như yêu cầu trong file đính kèm.
 

File đính kèm

Các bạn vui lòng viết code giúp mình như yêu cầu trong file đính kèm.
Bạn có thể gửi lại File và nói rõ hơn là lấy từ 3 sheet A, B, C đưa vào Sheet tổng hợp thì đưa vào như thế nào?
Ví dụ: 4 cột ở Sheet A sẽ đưa vào trước hay như thế nào? Sheet B, Sheet????

Bạn nói chung chung thế ai mà giúp được bạn!
 
Upvote 0
Sheet"A" Lấy dữ liệu các cột C5, E5, G5, I5 trở xuống qua Sheet "Tong Hop" vào các cột tương ứng là D5, E5, F5, G5. Sau đó qua Sheet "B" lấy dữ liệu các cột E5, G5, I5, M5 qua Sheet "Tong Hop" và các cột tương ứng nhu trên nhưng phải tiếp theo phần dữ liệu của Sheet "A" đã đưa qua. Sau đó tới Sheet "C" lấy dữ liệu các cột C5, G5, I5, K5 qua Sheet "Tong Hop" vào các cột tương ứng như trên nhưng phải tiếp theo dữ liệu của Sheet "A", "B" đã đưa qua. Cuối cùng đóng khung toàn bộ dữ liệu. Toàn bộ dữ liệu trong Sheet "Tong Hop" từ dòng A5 trở xuống xử dụng Font chữ "Courier New" Size 10 riêng cột G5 trở xuống dùng Size chữ 14 màu đỏ, chữ đậm.
 
Upvote 0
Sheet"A" Lấy dữ liệu các cột C5, E5, G5, I5 trở xuống qua Sheet "Tong Hop" vào các cột tương ứng là D5, E5, F5, G5. Sau đó qua Sheet "B" lấy dữ liệu các cột E5, G5, I5, M5 qua Sheet "Tong Hop" và các cột tương ứng nhu trên nhưng phải tiếp theo phần dữ liệu của Sheet "A" đã đưa qua. Sau đó tới Sheet "C" lấy dữ liệu các cột C5, G5, I5, K5 qua Sheet "Tong Hop" vào các cột tương ứng như trên nhưng phải tiếp theo dữ liệu của Sheet "A", "B" đã đưa qua. Cuối cùng đóng khung toàn bộ dữ liệu. Toàn bộ dữ liệu trong Sheet "Tong Hop" từ dòng A5 trở xuống xử dụng Font chữ "Courier New" Size 10 riêng cột G5 trở xuống dùng Size chữ 14 màu đỏ, chữ đậm.
Code thế này chẳng hạn:
[GPECODE=vb]Sub TongHop()
Dim Tmp, Arr(), i As Long, k As Long
ReDim Arr(1 To 30000, 1 To 9)
Tmp = Sheets("A").[C5:I10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 7)
Next
Tmp = Sheets("B").[E5:M10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 9)
Next
Tmp = Sheets("C").[C5:K10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 5): Arr(k, 6) = Tmp(i, 7): Arr(k, 7) = Tmp(i, 9)
Next
With Sheets("Tong Hop")
.[A5:I30000].Clear
With .[A5].Resize(k, 9)
.Value = Arr
.Borders.LineStyle = 1
.Font.Name = "Courier New"
.Font.Size = 10
End With
With .[G5].Resize(k)
.Font.Size = 14
.Font.Bold = True
.Font.ColorIndex = 3
End With
End With
End Sub[/GPECODE]
Riêng vùng cần định dạng chữ đỏ, đậm, ở đây thì bạn nói cột G, trong file thì bạn lại nói là từ cột H, hiện tại tôi chọn cột G, nếu bạn thay đổi thì sửa lại dòng lệnh thứ 30 nhé.
 
Upvote 0
Cảm ơn bạn nhiều! Ở Sheet "Tong Hop" mình muốn đóng khung tới cột K từ dòng số 4 trở xuống thì phải làm sao? Cột J, K không xóa dữ liệu.
 
Upvote 0
Cảm ơn bạn nhiều! Ở Sheet "Tong Hop" mình muốn đóng khung tới cột K từ dòng số 4 trở xuống thì phải làm sao? Cột J, K không xóa dữ liệu.
1. Bạn nhìn vào dòng lệnh thứ 23 (.[A5:I30000].Clear) sẽ thấy chỉ các cột A:I mới bị xóa dữ liệu chứ không xóa dữ liệu ở các cột J, K.

2. Muốn đóng khung từ dòng số 4 trở xuống thì bạn thêm vào sau dòng lệnh thứ 34 (giữa 2 dòng lệnh End With) một lệnh này nữa: .[A4:K4].Borders.LineStyle = 1 (có thể thay cột K bởi cột khác cho phù hợp). Hoặc cũng có thể bỏ dòng lệnh thứ 26 rồi thêm dòng lệnh này vào sau dòng lệnh 34: .[A4].Resize(k+1, 11).Borders.LineStyle = 1 (số 11 có thể thay bởi số khác cho phù hợp).
 
Upvote 0
1. Bạn nhìn vào dòng lệnh thứ 23 (.[A5:I30000].Clear) sẽ thấy chỉ các cột A:I mới bị xóa dữ liệu chứ không xóa dữ liệu ở các cột J, K.

2. Muốn đóng khung từ dòng số 4 trở xuống thì bạn thêm vào sau dòng lệnh thứ 34 (giữa 2 dòng lệnh EndWith) một lệnh này nữa: .[A4:K4].Borders.LineStyle = 1 (có thể thay cột K bởi cột khác cho phù hợp). Hoặc cũng có thể bỏ dòng lệnh thứ 26 rồi thêm dòng lệnh này vào sau dòng lệnh 34: .[A4].Resize(k+1, 11).Borders.LineStyle = 1 (số 11 có thể thay bởi số khác cho phù hợp).
Anh phúc và BQT cho em chen ngang 1 chút ạ:
Em thấy anh và trong 1 số code khác em đọc hay thấy có lệnh Resize, ví dụ: .[A4].Resize(k+1,11).Borders.LineStyle = 1
Anh có thể giải thích giúp em ý nghĩa của lệnh này và khi nào thì sử dụng đến nó không ạ?
 
Upvote 0
Anh phúc và BQT cho em chen ngang 1 chút ạ:
Em thấy anh và trong 1 số code khác em đọc hay thấy có lệnh Resize, ví dụ: .[A4].Resize(k+1,11).Borders.LineStyle = 1
Anh có thể giải thích giúp em ý nghĩa của lệnh này và khi nào thì sử dụng đến nó không ạ?
Bạn có thể dịch trực tiếp Resize nghĩa là gì thì phương thức Resize trong VBA cũng có ý nghĩa hoàn toàn tương tự như vậy. Rng.Resize(m, n) có thể hiểu là một vùng được điều chỉnh kích thước từ vùng Rng, thành m hàng và n cột. Chẳng hạn: [A4].Resize(2,3) là vùng mở rộng từ A4 thành 2 hàng và 3 cột, tức là vùng A4:C5; hoặc [A4:Z100].Resize(1,4) là vùng điều chỉnh kích thước vùng A4:Z100 thành 1 dòng, 4 cột, tức là vùng A4:D4, v.v...
 
Upvote 0
Bạn có thể dịch trực tiếp Resize nghĩa là gì thì phương thức Resize trong VBA cũng có ý nghĩa hoàn toàn tương tự như vậy. Rng.Resize(m, n) có thể hiểu là một vùng được điều chỉnh kích thước từ vùng Rng, thành m hàng và n cột. Chẳng hạn: [A4].Resize(2,3) là vùng mở rộng từ A4 thành 2 hàng và 3 cột, tức là vùng A4:C5; hoặc [A4:Z100].Resize(1,4) là vùng điều chỉnh kích thước vùng A4:Z100 thành 1 dòng, 4 cột, tức là vùng A4:D4, v.v...
Cảm ơn anh đã giải thích rất tỉ mỉ cho em ạ. Anh ơi nếu không dùng Resize thì mình có thể gán trực tiếp không anh?
Ví dụ thay vì dùng:[A4].Resize(2,3).select mình có thể thay bằng .Range("A4:C5").select được không ạ? Và dùng Resize có lợi gì hơn không ạ???
 
Upvote 0
Cảm ơn anh đã giải thích rất tỉ mỉ cho em ạ. Anh ơi nếu không dùng Resize thì mình có thể gán trực tiếp không anh?
Ví dụ thay vì dùng:[A4].Resize(2,3).select mình có thể thay bằng .Range("A4:C5").select được không ạ? Và dùng Resize có lợi gì hơn không ạ???
Câu hỏi thứ nhất: Tất nhiên là được, bởi vì 2 vùng đó thực chất là một.

Câu hỏi thứ hai: Resize sử dụng trong trường hợp địa chỉ vùng chưa xác định rõ được từ trước mà số hàng hoặc số cột được biết sau khi tính toán. Ví dụ cụ thể như ở code của tôi trong bài #4, rõ ràng gán .[A5].Resize(k, 9).Value = Arr dễ chịu hơn là gán .Range("A5:I" & k - 4).Value = Arr.
Và thực ra thì việc dùng cách nào cũng có thể nói là do thói quen của từng người chứ không áp đặt được.
 
Upvote 0
Câu hỏi thứ nhất: Tất nhiên là được, bởi vì 2 vùng đó thực chất là một.

Câu hỏi thứ hai: Resize sử dụng trong trường hợp địa chỉ vùng chưa xác định rõ được từ trước mà số hàng hoặc số cột được biết sau khi tính toán. Ví dụ cụ thể như ở code của tôi trong bài #4, rõ ràng gán .[A5].Resize(k, 9).Value = Arr dễ chịu hơn là gán .Range("A5:I" & k - 4).Value = Arr.
Và thực ra thì việc dùng cách nào cũng có thể nói là do thói quen của từng người chứ không áp đặt được.
Cảm ơn "Thầy" vậy là em đã hiểu được phần nào rồi!!!
 
Upvote 0
Upvote 0
Code thế này chẳng hạn:
[GPECODE=vb]Sub TongHop()
Dim Tmp, Arr(), i As Long, k As Long
ReDim Arr(1 To 30000, 1 To 9)
Tmp = Sheets("A").[C5:I10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 7)
Next
Tmp = Sheets("B").[E5:M10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 9)
Next
Tmp = Sheets("C").[C5:K10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 5): Arr(k, 6) = Tmp(i, 7): Arr(k, 7) = Tmp(i, 9)
Next
With Sheets("Tong Hop")
.[A5:I30000].Clear
With .[A5].Resize(k, 9)
.Value = Arr
.Borders.LineStyle = 1
.Font.Name = "Courier New"
.Font.Size = 10
End With
With .[G5].Resize(k)
.Font.Size = 14
.Font.Bold = True
.Font.ColorIndex = 3
End With
End With
End Sub[/GPECODE]
Riêng vùng cần định dạng chữ đỏ, đậm, ở đây thì bạn nói cột G, trong file thì bạn lại nói là từ cột H, hiện tại tôi chọn cột G, nếu bạn thay đổi thì sửa lại dòng lệnh thứ 30 nhé.
Anh cho em hỏi một chút về lệnh này với ạ:
Em hiểu là mảng này có kích thước gồm 9 cột và 30000 dòng nhưng chỗ 1 To 30000 thì con số 30000 là do mình chọn hay bắt buộc vậy anh?
 
Upvote 0
Anh cho em hỏi một chút về lệnh này với ạ:
Em hiểu là mảng này có kích thước gồm 9 cột và 30000 dòng nhưng chỗ 1 To 30000 thì con số 30000 là do mình chọn hay bắt buộc vậy anh?
Cái con số 30000 đó là tôi ước lượng (có dư) để phòng hờ như vậy thôi, có 3 sheet, mỗi sheet có lấy gần 10000 dòng nên mảng này tôi để ban đầu là 30000, nhưng thực tế sau khi chạy code thì nó chỉ dùng đến k dòng thôi (thực tế thì k<30000). Con số này bạn có thể thay đổi tùy theo tình hình thực tế.
 
Upvote 0
Cũng cần nói thêm một chút: Nếu file dữ liệu của tác giả được đồng nhất cấu trúc giữa các sheet (theo nghĩa các sheet đều lấy dữ liệu ở các cột như nhau) thì code sẽ ngắn gọn hơn một chút. Ở đây có 3 sheet, mỗi sheet lấy 4 cột khác nhau, nên có 3 đoạn lệnh gần như lặp lại (gán dữ liệu cho biến Tmp rồi từ Tmp đưa vào Arr). Nếu không phải 3 sheet mà là 30 sheet như vậy thì chắc chết quá. Đó cũng là một kinh nghiệm "xương máu" khi gặp bài toán tổng hợp dữ liệu từ nhiều sheet hoặc nhiều file: Nếu tất cả cùng một cấu trúc thì vấn đề sẽ trở nên đơn giản. Do đó khi thiết kế ban đầu cần phải lưu ý đến vấn đề này.
 
Upvote 0
Cũng cần nói thêm một chút: Nếu file dữ liệu của tác giả được đồng nhất cấu trúc giữa các sheet (theo nghĩa các sheet đều lấy dữ liệu ở các cột như nhau) thì code sẽ ngắn gọn hơn một chút. Ở đây có 3 sheet, mỗi sheet lấy 4 cột khác nhau, nên có 3 đoạn lệnh gần như lặp lại (gán dữ liệu cho biến Tmp rồi từ Tmp đưa vào Arr). Nếu không phải 3 sheet mà là 30 sheet như vậy thì chắc chết quá. Đó cũng là một kinh nghiệm "xương máu" khi gặp bài toán tổng hợp dữ liệu từ nhiều sheet hoặc nhiều file: Nếu tất cả cùng một cấu trúc thì vấn đề sẽ trở nên đơn giản. Do đó khi thiết kế ban đầu cần phải lưu ý đến vấn đề này.
Đúng là e cũng không biết tác giả định làm khó mình hay làm khó người giúp mà lại thiết kế không đồng nhất như vậy?
 
Upvote 0
Bạn ơi, mình thêm dòng lệnh .[A4:K4].Borders.LineStyle = 1 ngay sau dòng lệnh số 34(giữa 2 chữ EndWith) thì chỉ đóng khung được ô J4:K4 thôi chứ nó không đóng khung được toàn bộ dữ lieu từ A4:K4 trở xuống.Bạn xem lại giúp mình nhé.
 
Upvote 0
Bạn ơi, Mình đã làm như bạn hướng dẫn thì chỉ đóng khung được 2 ô J4:K4 thôi, bạn nghiêng cứu lại dùm mình nhé
 
Upvote 0
Bạn ơi, mình thêm dòng lệnh .[A4:K4].Borders.LineStyle = 1 ngay sau dòng lệnh số 34(giữa 2 chữ EndWith) thì chỉ đóng khung được ô J4:K4 thôi chứ nó không đóng khung được toàn bộ dữ lieu từ A4:K4 trở xuống.Bạn xem lại giúp mình nhé.
Vui lòng đọc lại bài hướng dẫn của tôi:
2. Muốn đóng khung từ dòng số 4 trở xuống thì bạn thêm vào sau dòng lệnh thứ 34 (giữa 2 dòng lệnh End With) một lệnh này nữa: .[A4:K4].Borders.LineStyle = 1 (có thể thay cột K bởi cột khác cho phù hợp). Hoặc cũng có thể bỏ dòng lệnh thứ 26 rồi thêm dòng lệnh này vào sau dòng lệnh 34: .[A4].Resize(k+1, 11).Borders.LineStyle = 1 (số 11 có thể thay bởi số khác cho phù hợp).
Trong code ban đầu thì dòng lệnh thứ 26 (.Borders.LineStyle = 1) đã đóng khung vùng .[A5].Resize(k, 9) rồi, do đó thêm câu lệnh .[A4:K4].Borders.LineStyle = 1 vào sẽ đóng khung thêm phần tiêu đề. Như vậy là đóng khung đầy đủ toàn bộ kết quả.

Trong bài hướng dẫn này, tôi cũng đưa ra cách giải quyết thứ 2 là bỏ dòng lệnh thứ 26 đi rồi thêm dòng lệnh .[A4].Resize(k+1, 11).Borders.LineStyle = 1 vào sau dòng lệnh thứ 34. Tôi nghĩ chắc bạn đang áp dụng lộn 2 cách này, nghĩa là xóa dòng lệnh thứ 26 và thêm dòng lệnh .[A4:K4].Borders.LineStyle = 1, do đó phần dữ liệu phía dưới không được đóng khung.
 
Upvote 0
Bạn ơi, mình thêm dòng lệnh .[A4:K4].Borders.LineStyle = 1 này thì chỉ đóng khung được cột J4:K4 thôi. Làm sao để đóng khung toàn bộ dữ liệu từ dòng A4:K4 trở xuống
 
Upvote 0
Bạn ơi, cột G5 ở sheet "Tong Hop" mình muốn viết số dưới dạng number, có dấu phẩy thì phai lam sao. khong co so le.
 
Upvote 0
Bạn ơi, cột G5 ở sheet "Tong Hop" mình muốn viết số dưới dạng number, có dấu phẩy thì phai lam sao. khong co so le.
Bạn thêm câu lệnh này: .NumberFormat = "#,##0" vào trong câu lệnh With .[G5].Resize(k)
Sau khi sửa thì code sẽ là thế này:
[GPECODE=vb]Sub TongHop()
Dim Tmp, Arr(), i As Long, k As Long
ReDim Arr(1 To 30000, 1 To 9)
Tmp = Sheets("A").[C5:I10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 7)
Next
Tmp = Sheets("B").[E5:M10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 3): Arr(k, 6) = Tmp(i, 5): Arr(k, 7) = Tmp(i, 9)
Next
Tmp = Sheets("C").[C5:K10000]
For i = 1 To UBound(Tmp)
If IsEmpty(Tmp(i, 1)) Then Exit For
k = k + 1
Arr(k, 1) = k: Arr(k, 4) = Tmp(i, 1): Arr(k, 5) = Tmp(i, 5): Arr(k, 6) = Tmp(i, 7): Arr(k, 7) = Tmp(i, 9)
Next
With Sheets("Tong Hop")
.[A5:I30000].Clear
With .[A5].Resize(k, 9)
.Value = Arr
.Font.Name = "Courier New"
.Font.Size = 10
End With
With .[G5].Resize(k)
.NumberFormat = "#,##0"
.Font.Size = 14
.Font.Bold = True
.Font.ColorIndex = 3
End With
.[A4].Resize(k + 1, 11).Borders.LineStyle = 1
End With
End Sub[/GPECODE]
 
Upvote 0
Bạn ơi, sao từ khi chèn Code vào thì thanh cuộn phía bên phải trang excel keo xuong nhanh het trang qua.
 
Upvote 0
Bạn ơi, từ khi mình chèn code vào thì thanh cuộn bên phải của trang excel bị ngắn lại, mình kéo có cái nhẹ thôi đã hết trang excel rồi, không nhìn thấy dữ lieu gi, có cách nào cả, có cách nào khắc phuc không bạn.
 
Upvote 0
Bạn ơi, từ khi mình chèn code vào thì thanh cuộn bên phải của trang excel bị ngắn lại, mình kéo có cái nhẹ thôi đã hết trang excel rồi, không nhìn thấy dữ lieu gi, có cách nào cả, có cách nào khắc phuc không bạn.
1) "Bạn ơi" là bạn nào đấy bạn???????????
2) Vấn đề bạn nói có phải là thanh trượt trong hình mình tô màu đỏ bị ngắn lại không?
 
Upvote 0
Bạn ơi, từ khi mình chèn code vào thì thanh cuộn bên phải của trang excel bị ngắn lại, mình kéo có cái nhẹ thôi đã hết trang excel rồi, không nhìn thấy dữ lieu gi, có cách nào cả, có cách nào khắc phuc không bạn.
Thanh cuộn ngắn hay dài phụ thuộc vào số dòng dữ liệu có trên sheet. Như vậy có lẽ do lượng dữ liệu của bạn lớn quá nên nó như vậy, và đó là bình thường thôi mà. Thay vì bạn kéo thanh cuộn này thì bạn dùng con lăn trên chuột để cuộn trang màn hình.
 
Upvote 0
Bạn ơi, không phải thanh cuộn nằm ngang mà là thanh cuộn nằm dọc trên xuống đó bạn, kéo cái nhẹ thôi mà nó xuống tới dòng 100 rồi, lăn chuột thì lâu quá, bạn còn cách nào không.
 
Upvote 0
Bạn ơi, không phải thanh cuộn nằm ngang mà là thanh cuộn nằm dọc trên xuống đó bạn, kéo cái nhẹ thôi mà nó xuống tới dòng 100 rồi, lăn chuột thì lâu quá, bạn còn cách nào không.
Dữ liệu thực tế của bạn sau khi chạy code trên là bao nhiêu hàng vậy?
 
Upvote 0
Nhiều nhất là 52tờ giấy A5 ngang, mỗi tờ được 10 hàng, mỗi tháng mình phải in ra rất nhiều tuy nhiên không chuyển sang khổ giấy A4 hoặc A3 đứng được.
 
Upvote 0
Nhiều nhất là 52tờ giấy A5 ngang, mỗi tờ được 10 hàng, mỗi tháng mình phải in ra rất nhiều tuy nhiên không chuyển sang khổ giấy A4 hoặc A3 đứng được.
Dữ liệu như vậy thì không phải là nhiều. Có lẽ trong file của bạn có một số dữ liệu bị ẩn ở một hàng nào đó khá lớn. Bạn thử nhấn Ctrl+End xem Excel chọn ô nào trên sheet. Nếu bạn không cố tình tạo dữ liệu ở ô đó, ngoại trừ dữ liệu được tổng hợp qua thì bạn Delete toàn bộ các hàng trước khi chạy code xem sao.

Nếu bạn không ngại về dữ liệu trên file thì có thể gửi file thực tế cho tôi theo địa chỉ nghiaphuc@giaiphapexcel.com, tôi sẽ kiểm tra giúp bạn.
 
Upvote 0
Các bạn vui lòng viết code giúp mình như yêu cầu trong file đính kèm.
Gặp kiểu dữ liệu này, tôi "khoái" dùng 1 dòng phụ (trong file là dòng 5)
Cột nào cần lấy sang Tổng hợp thì ghi số cột của sheet Tổng Hợp vào ô dưới tiêu đề cột đó.
Tất cả các sheet khác "Tong_Hop" đều được lấy dữ liệu về sheet Tong Hop.
[GPECODE=vb]Public Sub GPE_123()
Dim Ws As Worksheet, sArr(), dArr(1 To 60000, 1 To 9), I As Long, J As Long, K As Long, C As Long
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "Tong_Hop" Then
With Ws
C = .[A4].End(xlToRight).Column
sArr = .Range(.[A4], .[A65536].End(xlUp)).Resize(, C).Value
End With
For I = 3 To UBound(sArr, 1)
K = K + 1
dArr(K, 1) = K
For J = 1 To C
If sArr(2, J) <> Empty Then dArr(K, sArr(2, J)) = sArr(I, J)
Next J
Next I
End If
Next Ws
With Sheets("Tong_hop")
.[A6].Resize(60000, 9).ClearContents
.[H6].Resize(K).Font.Bold = True
.[H6].Resize(K).Font.ColorIndex = 3
With .[A6].Resize(K, 9)
.Value = dArr
.Borders.LineStyle = xlContinuous
.Font.Name = "Courier New"
End With
End With
End Sub[/GPECODE]
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Trước tiên mình chân thành cảm ơn bạn nhiệt tình giúp đỡ. Khuya nay mình đã thử làm trên một file excel mới rồi thì kết quả rất ok, có lẽ những file cũ của mình bị lỗi rồi, mình sẽ sửa lại. Bạn ơi giúp mình từ cột B5:C5 trở xuống của sheet Tong Hop sử dụng Size chữ là 8 tất cả những cái còn lại giữ nguyên như cũ.
 
Upvote 0
Trước tiên mình chân thành cảm ơn bạn nhiệt tình giúp đỡ. Khuya nay mình đã thử làm trên một file excel mới rồi thì kết quả rất ok, có lẽ những file cũ của mình bị lỗi rồi, mình sẽ sửa lại. Bạn ơi giúp mình từ cột B5:C5 trở xuống của sheet Tong Hop sử dụng Size chữ là 8 tất cả những cái còn lại giữ nguyên như cũ.
Rất nhiều người tham gia trả lời bài cho bạn, bạn muốn trao đổi với người nào thì ấn nút "Trả lời với trích dẫn" bài của người đó, mọi người mới biết bạn muốn trao đổi với ai, viết chung như bạn thì không ai biết bạn muốn người nào tiếp tục với bạn đây.
Chuyện Format Font chữ, cỡ chữ, màu chữ v.v... bạn tự format thủ công từng cột 1 lần đầu đi.
Sau này VBA có cập nhật dữ liệu mới vào thì các Format của bạn vẫn còn nguyên mà, có xóa format của bạn đâu.
Đâu cần "cứng ngắt" viết trong code, khi muốn thay đổi font, size, color ... lại phiền!
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn nhiều nhé, hôm nay mình đã xóa file làm lại thì kết quả OK, nhưng bạn chỉnh dùm mình thêm một tí là Sheet Tong Hop cột B5:C5 trở xuống dùng size chữ 8 thôi. Mới lần đầu nhờ GPE giúp đỡ nên còn hơi lúng túng có gì nhờ mọi người bỏ qua cho.
 
Upvote 0
Dữ liệu như vậy thì không phải là nhiều. Có lẽ trong file của bạn có một số dữ liệu bị ẩn ở một hàng nào đó khá lớn. Bạn thử nhấn Ctrl+End xem Excel chọn ô nào trên sheet. Nếu bạn không cố tình tạo dữ liệu ở ô đó, ngoại trừ dữ liệu được tổng hợp qua thì bạn Delete toàn bộ các hàng trước khi chạy code xem sao.

Nếu bạn không ngại về dữ liệu trên file thì có thể gửi file thực tế cho tôi theo địa chỉ nghiaphuc@giaiphapexcel.com, tôi sẽ kiểm tra giúp bạn.
Hôm nay mình đã xóa Sheet Tong Hop làm lại thì kết quả OK, Bạn ơi giúp mình thêm tí nữa. Tại Sheet Tong Hop từ dòng B5:C5 trở xuống dùng Size chữ 8 thôi. Sorry vì đã làm phiền. cảm ơn bạn nhiều.
 
Upvote 0
Hôm nay mình đã xóa Sheet Tong Hop làm lại thì kết quả OK, Bạn ơi giúp mình thêm tí nữa. Tại Sheet Tong Hop từ dòng B5:C5 trở xuống dùng Size chữ 8 thôi. Sorry vì đã làm phiền. cảm ơn bạn nhiều.
Trong code tại bài #23 của tôi có đoạn thế này:
Mã:
With.[G5].Resize(k)[COLOR=#000000][FONT=Consolas]
     .NumberFormat = "#,##0"[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Size = 14[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Bold = True[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.ColorIndex = 3[/FONT][/COLOR]
End With
Bạn dựa vào đó mà chế biến lại câu lệnh cho phù hợp với yêu cầu. Phải thử làm thì mới biết mình làm được không chứ.
 
Upvote 0
Em cũng có một vấn đề tương tự mong được các anh/chị hỗ trợ giúp. File của em cũng lấy dữ liệu từ 4 sheet khác nhau nhưng lại theo mã hiệu công việc. Khi ta nhập mã hiệu vào cột. Tức là khi ta nhập mã hiệu vào cột B của sheet "TH VL-NC-MTC" thì nó sẽ lấy đơn giá trên 4 sheet CK, VL-TB, DM366, DM7606 để đưa vào.
Em xin cảm ơn anh/chị giúp đỡ
 

File đính kèm

Upvote 0
Em cũng có một vấn đề tương tự mong được các anh/chị hỗ trợ giúp. File của em cũng lấy dữ liệu từ 4 sheet khác nhau nhưng lại theo mã hiệu công việc. Khi ta nhập mã hiệu vào cột. Tức là khi ta nhập mã hiệu vào cột B của sheet "TH VL-NC-MTC" thì nó sẽ lấy đơn giá trên 4 sheet CK, VL-TB, DM366, DM7606 để đưa vào.
Em xin cảm ơn anh/chị giúp đỡ

chào bạn,

- khi bạn nhập mã hiệu vào cột B sheet "TH VL-NC-MTC" --> bạn đã biết chính xác các mã đó rồi hay sao?

- hiện tại Header 4 sheet màu vàng chưa đồng nhất với nhóm Đơn giá tại sheet "TH VL-NC-MTC" (VL chinh', VL phu, Nhan Cong, MTC) ---> bạn hãy mô tả kỹ hoăc nói rõ kết quả (điền thử 4 mã hiệu của 4 sheet + kết quả) khi tìm mã hiệu của từng sheet sẽ lấy những cột nào?
 
Upvote 0
chào bạn,

- khi bạn nhập mã hiệu vào cột B sheet "TH VL-NC-MTC" --> bạn đã biết chính xác các mã đó rồi hay sao?

- hiện tại Header 4 sheet màu vàng chưa đồng nhất với nhóm Đơn giá tại sheet "TH VL-NC-MTC" (VL chinh', VL phu, Nhan Cong, MTC) ---> bạn hãy mô tả kỹ hoăc nói rõ kết quả (điền thử 4 mã hiệu của 4 sheet + kết quả) khi tìm mã hiệu của từng sheet sẽ lấy những cột nào?
Chào bạn
Cái này chỉ là mình cắt nhỏ từ công việc của mình nên nó vắn tắt như vậy nhứ thật ra nó rất là nhiều. Khi mình nhập mã hiệu vào sheet "TH VL-NC-MTC" thì mình dùng listbox nên tất cả các mã hiệu đó đều chính xác cả.
Còn các các đơn giá chưa đồng nhất thật ra cũng ko fai vì nó chỉ là 1 phần nhỏ trong dữ liệu thôi nhưng tất cả đều bao gồm đầy đủ (VL chính, VL phụ, Nhân công, Máy thi công).
Cụ thể ví dụ như mình nhập vào mã hiệu "MBA50" thì nó sẽ lấy đơn giá của mã hiệu này bên sheet "VL-TB" cụ thể là 35,000,000 đưa vào phần vật liệu chính (cột G) bên sheet "TH VL-NC-MTC.
Cảm ơn bạn đã giúp đỡ mình
 
Upvote 0
Chào bạn
Cái này chỉ là mình cắt nhỏ từ công việc của mình nên nó vắn tắt như vậy nhứ thật ra nó rất là nhiều. Khi mình nhập mã hiệu vào sheet "TH VL-NC-MTC" thì mình dùng listbox nên tất cả các mã hiệu đó đều chính xác cả.
Còn các các đơn giá chưa đồng nhất thật ra cũng ko fai vì nó chỉ là 1 phần nhỏ trong dữ liệu thôi nhưng tất cả đều bao gồm đầy đủ (VL chính, VL phụ, Nhân công, Máy thi công).
Cụ thể ví dụ như mình nhập vào mã hiệu "MBA50" thì nó sẽ lấy đơn giá của mã hiệu này bên sheet "VL-TB" cụ thể là 35,000,000 đưa vào phần vật liệu chính (cột G) bên sheet "TH VL-NC-MTC.
Cảm ơn bạn đã giúp đỡ mình

nếu bạn đã load được mã hiệu lên Listbox thì sao ko đưa luôn đơn giá vào đó luôn để khi chọn mã hiệu thì + kèm theo đơn giá ???
(bạn có thể share cái File có Form đó mà bạn đang dùng ko?)
 
Upvote 0
Đúng là đưa đơn giá vào bạn ah. Nhưng đơn giá mỗi thời điểm nó lại khác nhau nên cần phải có chức năng cập nhật. Ko lẽ mỗi lần thay đổi đơn giá lại fai mở ra listbox để lấy lại nội dung công việc cùng đơn giá của nó. Chính vì vậy mà mình cần 1 chức năng để khi click vào (button) thì nó sẽ lấy đơn giá từ các sheet theo mã hiệu để đưa vào.
Mong nhân được sự giúp đỡ. Cảm ơn bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Gởi lại bạn file này cho sát với công việc của mình hơn. File trên cũ rồi
Cảm ơn ban
 

File đính kèm

Upvote 0
Gởi lại bạn file này cho sát với công việc của mình hơn. File trên cũ rồi
Cảm ơn ban

- vấn đề của bạn hình như cũng khá đơn giản :-=, nếu như dùng hàm tự tạo.
- bạn hãy thêm code cho UserForm đó, khi click nút Nhập thì điền thêm tên sheet của mã hiệu vào cột C.
- bạn tải file đính kèm về xem sao nhé !

'----
file đính kèm ---> #46
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã giúp đỡ mình. Nhưng cách này có 1 vài vấn đề bạn à
- Vì nó là 1 hàm tự tạo nên nếu như khi dữ liệu lên đến cả ngàn dòng thì có có đến ngàn hàm tự tạo đc gọi ra, thêm nữa có đến 4 đơn giá là đến thêm 4 ngàn hàm được gọi vậy có làm file trở nên nặng nề không? (ban đầu nó là file excel được sử dụng vlookup nhưng vì nó quá nặng nề nên đành phải chọn giải pháp bằng code VBA).
- Vì đặc thù công việc nên mình thêm 1 vài code vào file ban đầu để xử lý đơn giản hơn cho bản thân mình nhưng sản phẩm cuối cùng mình phải chuyển cho bên thứ 2 ở dạng không có macro (.xlsx) mà như vậy thì những hàm tự tạo đều bị lỗi #NAME.

Gởi ban 1 file có cách xử lý tương tự nhưng do trình VBA mình hạn chế quá nên nhìn vào hoa hết cả mắt. Mong được sự giúp đỡ của bạn. Chân thành cảm ơn
 

File đính kèm

Upvote 0
Cảm ơn bạn đã giúp đỡ mình. Nhưng cách này có 1 vài vấn đề bạn à
- Vì nó là 1 hàm tự tạo nên nếu như khi dữ liệu lên đến cả ngàn dòng thì có có đến ngàn hàm tự tạo đc gọi ra, thêm nữa có đến 4 đơn giá là đến thêm 4 ngàn hàm được gọi vậy có làm file trở nên nặng nề không? (ban đầu nó là file excel được sử dụng vlookup nhưng vì nó quá nặng nề nên đành phải chọn giải pháp bằng code VBA).
bạn nói có lý, khi thay đổi đơn giá mã hiệu tại 4 sheet kia thì sheet TH VL-NC-MTC sẽ được tính toán liên tục --> làm file chạy chậm. Mình đã xử lý là thêm điều kiện "on off Calculate" bằng cách:
1. off nó khi Worksheet_Deactivate, on khi Worksheet_Activate
2. thêm điều kiện If cho công thức đơn giá.
(nếu Excel 2007 trở về sau thì bạn sẽ thấy rõ hơn khi dùng chức năng Camera từ sheet A sang sheet B)

- Vì đặc thù công việc nên mình thêm 1 vài code vào file ban đầu để xử lý đơn giản hơn cho bản thân mình nhưng sản phẩm cuối cùng mình phải chuyển cho bên thứ 2 ở dạng không có macro (.xlsx) mà như vậy thì những hàm tự tạo đều bị lỗi #NAME.
nếu mục đích bên thứ 2 chỉ xem và ko chỉnh sửa gì thêm thì bạn có thể chuyển toàn bộ đơn giá sang Value trước khi convert đuôi .xlsx

Link: https://www.mediafire.com/?3rokl00d1pyjj34
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã giúp mình.
Đúng là cách bạn giúp mình nó có ưu điểm hay là có thể tự động cập nhật đơn giá lúc mình thay đổi bên sheet dữ liệu. Nhưng lại mắc nhược điểm là khi chuyển file cho người ta phải copy-paste value, mà vấn đề này cũng khá căng vì trong file công việc của mình có đến 3 sheet có cấu hình tương tự như vậy (mình đang cố gắng muốn bớt được thao tác bằng tay cái nào càng hay cái đấy ấy mà).
Mình mong bạn có thể giúp mình đoạn code như mình đề cập ở #42 và #45 để mình áp dụng cả 2 cách vào công việc và đưa ra được giải pháp tối ưu nhất.
Một lần nữa cảm ơn bạn rất nhiều
 
Upvote 0
Cảm ơn bạn đã giúp mình.
Đúng là cách bạn giúp mình nó có ưu điểm hay là có thể tự động cập nhật đơn giá lúc mình thay đổi bên sheet dữ liệu. Nhưng lại mắc nhược điểm là khi chuyển file cho người ta phải copy-paste value, mà vấn đề này cũng khá căng vì trong file công việc của mình có đến 3 sheet có cấu hình tương tự như vậy (mình đang cố gắng muốn bớt được thao tác bằng tay cái nào càng hay cái đấy ấy mà).
Mình mong bạn có thể giúp mình đoạn code như mình đề cập ở #42 và #45 để mình áp dụng cả 2 cách vào công việc và đưa ra được giải pháp tối ưu nhất.
Một lần nữa cảm ơn bạn rất nhiều

- vấn đề chuyển sang Value khá dễ dàng mà bạn, cũng dùng code chứ đâu phải copy and paste bằng tay --> click 1 phát là xong ấy mà :-=

- còn theo cách của #45 thì code đó cũng ko có tự động mà đòi hỏi phải bấm nút và bên file kia chỉ có 1 sheet Gia VLieu (của bạn là 4 sheet)
- nếu bạn làm tự động Update đơn giá (theo kiểu Scripting.Dictionary, ko dùng hàm tự tạo) khi sheet Active ---> mình nghĩ bạn chỉ dùng khi nào bạn thật sự rành về code, vì khi bố cục có thay đổi 1 tí "sẽ rất là nguy hiểm +-+-+-+"
 
Upvote 0
- vấn đề chuyển sang Value khá dễ dàng mà bạn, cũng dùng code chứ đâu phải copy and paste bằng tay --> click 1 phát là xong ấy mà :-=

- còn theo cách của #45 thì code đó cũng ko có tự động mà đòi hỏi phải bấm nút và bên file kia chỉ có 1 sheet Gia VLieu (của bạn là 4 sheet)
- nếu bạn làm tự động Update đơn giá (theo kiểu Scripting.Dictionary, ko dùng hàm tự tạo) khi sheet Active ---> mình nghĩ bạn chỉ dùng khi nào bạn thật sự rành về code, vì khi bố cục có thay đổi 1 tí "sẽ rất là nguy hiểm +-+-+-+"
Hihi đúng là như vậy bạn à.
Mình làm file này với mục đích phục vụ cho công việc của anh em trong phòng (trước đây chỉ là 1 file excel bình thường nhưng lại link rất rối rắm) nên đòi hỏi nhiều lúc đơn giản nhưng phải khái quát nhất để người khác nhìn vào có thể hiểu và tiến hành được.
Còn về vấn đề Scripting.Dictionary thì đúng là file hiện giờ mình đang áp dụng theo (theo code của anh NDU) nhưng không hiểu sao nó chỉ update dữ liệu được trên 3 sheet còn 1 sheet "CK" (được tổng hợp từ 1 sheet khác nữa) thì lại không được nên mình đành phải tìm tòi tiếp.
Cảm ơn bạn đã giúp đỡ mình
Ah còn vấn đề chuyển sang value mà dùng code thì thế nào bạn nhỉ. Có thế chỉ giúp mình được không
 
Lần chỉnh sửa cuối:
Upvote 0
Trong code tại bài #23 của tôi có đoạn thế này:
Mã:
With.[G5].Resize(k)[COLOR=#000000][FONT=Consolas]
     .NumberFormat = "#,##0"[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Size = 14[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Bold = True[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.ColorIndex = 3[/FONT][/COLOR]
End With
Bạn dựa vào đó mà chế biến lại câu lệnh cho phù hợp với yêu cầu. Phải thử làm thì mới biết mình làm được không chứ.
Mình làm không được bạn ơi, nếu đổi tất cả sang Size 8 thì dể rồi, cái này mình chỉ đổi từ B5:C5 trở xuống thôi. Bạn có thể chỉ mình không.
 
Upvote 0
bạn nói có lý, khi thay đổi đơn giá mã hiệu tại 4 sheet kia thì sheet TH VL-NC-MTC sẽ được tính toán liên tục --> làm file chạy chậm. Mình đã xử lý là thêm điều kiện "on off Calculate" bằng cách:
1. off nó khi Worksheet_Deactivate, on khi Worksheet_Activate
2. thêm điều kiện If cho công thức đơn giá.
(nếu Excel 2007 trở về sau thì bạn sẽ thấy rõ hơn khi dùng chức năng Camera từ sheet A sang sheet B)


nếu mục đích bên thứ 2 chỉ xem và ko chỉnh sửa gì thêm thì bạn có thể chuyển toàn bộ đơn giá sang Value trước khi convert đuôi .xlsx
Không ổn rồi bạn ơi.
Khi áp dụng cách này vào công việc thì nó phát sinh vấn đề như thế này bạn à, mình có 1 sheet được vlookup đến sheet TH VL-NC-MTC, nhưng lúc này sheet TH VL-NC-MTC lại bị Deactivate thì code đâu có chạy ==> vlookup bị lỗi #VALUE.
Có cách nào khắc phục được điểm này không hả bạn.
Cảm ơn
 
Upvote 0
Không ổn rồi bạn ơi.
Khi áp dụng cách này vào công việc thì nó phát sinh vấn đề như thế này bạn à, mình có 1 sheet được vlookup đến sheet TH VL-NC-MTC, nhưng lúc này sheet TH VL-NC-MTC lại bị Deactivate thì code đâu có chạy ==> vlookup bị lỗi #VALUE.
Có cách nào khắc phục được điểm này không hả bạn.
Cảm ơn

- bạn share cái file lên để mình xem thử,
- vì mình nghĩ đơn giá sheet TH VL-NC-MTC được lấy số liệu từ các 4 sheet khác, bởi vậy sheet mà bạn muốn tham chiếu đến tại sao ko tham chiếu đến các sheet kia mà phải là sheet TH VL-NC-MTC.

'- - -
mình đã gửi nick Face vào tin nhắn riêng cho bạn rồi nhé,
 
Lần chỉnh sửa cuối:
Upvote 0
Hì file của mình lên đến 6mb lận nên bạn cho mình xin cái mail để mình gởi cho tiện
Cảm ơn bạn
 
Upvote 0
Bạn có thể gửi lại File và nói rõ hơn là lấy từ 3 sheet A, B, C đưa vào Sheet tổng hợp thì đưa vào như thế nào?
Ví dụ: 4 cột ở Sheet A sẽ đưa vào trước hay như thế nào? Sheet B, Sheet????

Bạn nói chung chung thế ai mà giúp được bạn!
Mình xin hỏi bạn chúc về vấn đề tổng hợp dữ liệu từ các file.
Bài của mình: http://www.giaiphapexcel.com/forum/showthread.php?91801-Nhờ-AE-GPE-chỉnh-code-file-tổng-hợp-dữ-liệu
 
Upvote 0
Trong code tại bài #23 của tôi có đoạn thế này:
Mã:
With.[G5].Resize(k)[COLOR=#000000][FONT=Consolas]
     .NumberFormat = "#,##0"[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Size = 14[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.Bold = True[/FONT][/COLOR]
[COLOR=#000000][FONT=Consolas]     .Font.ColorIndex = 3[/FONT][/COLOR]
End With
Bạn dựa vào đó mà chế biến lại câu lệnh cho phù hợp với yêu cầu. Phải thử làm thì mới biết mình làm được không chứ.
Chào bạn! mình đã làm được rồi, cảm ơn bạn nhiều. Cho mình hỏi thêm tí nữa là mình có rất nhiều file excel có định dạng going nhau có cách nào bỏ code vào một file mà chạy code cho tất cả các file.
 
Upvote 0
Chào bạn! mình đã làm được rồi, cảm ơn bạn nhiều. Cho mình hỏi thêm tí nữa là mình có rất nhiều file excel có định dạng going nhau có cách nào bỏ code vào một file mà chạy code cho tất cả các file.
Đó là add in . Bạn search trên diễn đàn với từ khóa "Cách thêm add in vào exccel".
 
Upvote 0
Đó là add in . Bạn search trên diễn đàn với từ khóa "Cách thêm add in vào exccel".

Mình đã tạo một file với tất cả code mà bạn đã chỉ mình sau đó Save lại với phần duoi là .xla sau đó vào excel cài add in vào nhưng trên thanh Ribbon không hiển thị chữ Add in đâu cả. có cách nào giup mình không bạn.
mình vào google xem rất nhiều hướng dẫn nhưng bó tay bạn ơi.
 
Upvote 0
Mình đã tạo một file với tất cả code mà bạn đã chỉ mình sau đó Save lại với phần duoi là .xla sau đó vào excel cài add in vào nhưng trên thanh Ribbon không hiển thị chữ Add in đâu cả. có cách nào giup mình không bạn.
mình vào google xem rất nhiều hướng dẫn nhưng bó tay bạn ơi.
Theo mình sẽ KHÔNG BAO GIỜ thấy Add in trên thanh Ribbon cả!!!
Bạn vào mục để cài thêm, đã thấy add in đó được "tích" chưa??? đã "tích" là chạy được
Bạn đặt công thức trong cell là tên hàm trong add in xem có hiện ra tên hàm đó không?
Mà bạn tạo add in của file ở bài nào vậy?
 
Upvote 0
Theo mình sẽ KHÔNG BAO GIỜ thấy Add in trên thanh Ribbon cả!!!
Bạn vào mục để cài thêm, đã thấy add in đó được "tích" chưa??? đã "tích" là chạy được
Bạn đặt công thức trong cell là tên hàm trong add in xem có hiện ra tên hàm đó không?
Mà bạn tạo add in của file ở bài nào vậy?
Mình đã cài them và đã "tích" nhưng vẫn không thấy chữ Add-Ins đâu cả. mình tạo add-ins của bài code nhập dữ lieu ở trang 1 đó bạn. Bạn nghiêng cứu xem thế nào nhé.
 
Upvote 0
Mình đã tạo một file với tất cả code mà bạn đã chỉ mình sau đó Save lại với phần duoi là .xla sau đó vào excel cài add in vào nhưng trên thanh Ribbon không hiển thị chữ Add in đâu cả. có cách nào giup mình không bạn.
mình vào google xem rất nhiều hướng dẫn nhưng bó tay bạn ơi.
Đâu phải cứ cài Add-ins là nó phải có mặt tại tab Add-ins trên Ribbon đâu, chỉ khi nào trong Add-ins đó có tạo một nút lệnh hoặc nhóm lệnh trên Ribbon thì nó mới nằm ở đó chứ. Nhưng mà bạn cứ yên tâm, một khi bạn đã cài Add-ins thì bạn sẽ sử dụng được nó, còn việc làm sao để gọi các thủ tục có trong Add-ins đó thì đâu nhất thiết cứ phải có nút lệnh đâu, bạn hoàn toàn có thể tạo phím tắt cho từng thủ tục mà.
 
Upvote 0
Đâu phải cứ cài Add-ins là nó phải có mặt tại tab Add-ins trên Ribbon đâu, chỉ khi nào trong Add-ins đó có tạo một nút lệnh hoặc nhóm lệnh trên Ribbon thì nó mới nằm ở đó chứ. Nhưng mà bạn cứ yên tâm, một khi bạn đã cài Add-ins thì bạn sẽ sử dụng được nó, còn việc làm sao để gọi các thủ tục có trong Add-ins đó thì đâu nhất thiết cứ phải có nút lệnh đâu, bạn hoàn toàn có thể tạo phím tắt cho từng thủ tục mà.
Bạn có thể giúp mình là cho nó hiện lên thanh Ribbon nhé. Và dùng phím tắt thì phím gì vậy? Cảm ơn bạn nhiều lắm.
 
Upvote 0
Khi bạn kick vào Developer/Marco se thấy tên của marco, phía duoi co 1 ô nhỏ để đặt phím tắt đó.
Vấn đề là mình muốn tạo add-ins để chạy cho nhiều file excel. không biết làm vậy có được không bạn? Mình có mấy chục file excel có cùng định dạng, nếu bỏ code cho từng file cũng được nhưng mỗi lần chỉnh sửa code thì phảiccập nhật mấy chục file thì mất thời gian quá. Cách tren google chỉ mình đã thử nhưng không được. Hy vọng bạn sẽ giúp được mình trong vấn đề này.
 
Upvote 0

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

Back
Top Bottom