Hỏi code tự động thêm dòng ở trang tổng hợp khi thêm sheet mới (1 người xem)

Liên hệ QC

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

pinklove

Thành viên thường trực
Tham gia
21/1/08
Bài viết
336
Được thích
42
Vấn đề này mình đã hỏi ở bài khác nhưng có lẽ cần có một bài mới cho một vấn đề mới nên mình đăng vào đây. Nhờ anh em GPE xem xét giúp.

Ở sheet "Báo cáo chung" mình có list một danh sách các trạm để thống kê số liệu với mỗi trạm là 1 sheet. Mỗi khi thêm mới trạm, mình phải tạo thêm sheet và ở "báo cáo chung" mình phải insert thêm dòng, HyperLink đến tên sheet và liên kết số liệu sang một cách thủ công. Nhờ anh em giúp giải pháp để mỗi lần thêm sheet mới thì ở sheet "báo cáo chung" sẽ tự động thêm dòng (Nếu theo đúng chỗ insert thì càng tốt, ví dụ thêm mới trước sheet D-T.Tam1 thì nó thêm dòng trên dòng link của D-T.Tam1 ở "báo cáo chung").


Yêu cầu của dòng mới thêm vào là:


- Tên trạm là tên của sheet hoặc của một ô nào đó trên sheet cũng được (để mình có thể đánh tên vào ô đó)


- Nếu sheet bắt đầu bằng chữ F thì Loại thiết bị là "L2 Switch" và copy công thức các mục phía sau (lắp đặt, hỏng....) của dòng "L2 Switch" đã có trước đó.


- Nếu sheet bắt đầu bằng chữ D thì Loại thiết bị là "IP DSLAM" và copy công thức các mục phía sau (lắp đặt, hỏng....) của dòng "L2 Switch" đã có trước đó.


- Các mục Loại Thiết Bị (L2 Switch,IP DSLAM) sẽ được link đến sheet.

Rất mong nhận được sự giúp đỡ của ACE.

File mình tải tại đây ạ
 
Tôi đã hỏi và bạn trả lời ở đây
Bao nhiêu lâu bạn chèn 1 sheet như vậy? Mỗi lần chèn nhiều không?

Tôi nghĩ là không nhiều, vì đâu phải ngẫu nhiên lại sinh ra 1 trạm đúng không? nếu đúng vậy thì làm tay cho nhanh và tin cậy hơn nhé. (không phải cái gì tự động đã hẳn hay và tiết kiệm thời gian)


Không phải thỉnh thoảng đâu bạn ạ. Cái này mình sẽ phải làm thường xuyên vì trạm ko lắp mới nhưng thiết bị trong trạm sẽ phát sinh liên tục do số thuê bao ngày càng tăng. Hơn nữa nếu như mình làm thì có thể, nhưng có cả những người khác sẽ quản lý file này mà theo như mình đã nói, toàn gà mờ mù tịt cả. Vậy nên mình mới "vẽ" ra ý tưởng này chớ. :) mong giola va các bạn giúp đỡ.
-------
Nhưng câu trả lời không rõ ràng,
thường xuyên là bao lâu? 1 ngày, 2 ngày, 1 tuần, hay vài tháng...vv?

rồi bạn cũng lờ đi câu hỏi là mỗi lần chèn thì chèn bao nhiêu sheets?

Thiết nghĩ, muốn người khác trả lời mình nhanh, rõ ràng -- thì mình cũng phải thế khi ng quan tâm giúp hỏi lại cho rõ.

Lý do bạn nói người gà mù tịt -- cái này không hay chút nào, gà mù tịt thì phải tự đào tạo tự học tự nâng cao... không nên khuyến khích làm họ mù hơn.
 
Upvote 0
Nhưng câu trả lời không rõ ràng,
thường xuyên là bao lâu? 1 ngày, 2 ngày, 1 tuần, hay vài tháng...vv?

rồi bạn cũng lờ đi câu hỏi là mỗi lần chèn thì chèn bao nhiêu sheets?

Thiết nghĩ, muốn người khác trả lời mình nhanh, rõ ràng -- thì mình cũng phải thế khi ng quan tâm giúp hỏi lại cho rõ.

Lý do bạn nói người gà mù tịt -- cái này không hay chút nào, gà mù tịt thì phải tự đào tạo tự học tự nâng cao... không nên khuyến khích làm họ mù hơn.
Tôi cảm ơn bạn đã có nhã ý giúp tôi. Nhưng tôi nghĩ rằng nếu thật sự cần thiết thì tôi mới lên đây, đăng bài hết chỗ này đến chỗ nọ để nhờ vả, mong nhận được sự giúp đỡ của mọi người chứ không phải tôi là người rỗi hơi rồi lên hỏi lung tung mà bạn cứ phải vặn vẹo tôi như thế. Những cái bạn hỏi chả liên quan gì đến mục đích của tôi. Tôi xin lỗi nếu làm bạn phật ý, nhưng nếu như có thể tự lực " đào tạo và nâng cao" thì tôi cũng chẳng cần nhờ đến các bạn làm gì.

Nếu mọi người thấy việc của tôi không đáng để giúp đỡ thì cũng không sao, tôi lại quay về lọ mọ với mấy cái việc thủ công trước giờ tôi làm. Tôi chỉ mong những người có khả năng hơn người khác một chút, hãy đừng làm khó những người như tôi mà hãy giúp đỡ tận tình nếu có thể.

Xin cảm ơn và xin thứ lỗi nếu tôi nói gì quá.
 
Upvote 0
Không có gì quá cả, Chỉ là chưa hiểu
nhưng người giúp muốn hỏi rõ hơn để tìm giải pháp nào cho hay nhất. Vì chưa thông thì sao tìm phương án tốt nhất cho bạn được (không phải vặn vẹo - nếu cứ nói thế thì ai hỏi cũng là vặn ah), không nói rõ sao giúp?

Những thông tin hỏi trên, trả lời trong tầm tay của bạn có chi phải không nói, ví dụ 1 ngày có giải pháp khác, add nhiều sheet cùng lúc giải pháp khác, từng 1 sheet thì giải pháp khác.

Lâu lâu mới add và công việc đơn giản thì ta làm bằng các thao tác thường thì sẽ giúp vừa làm vừa kiểm tra luôn, phải nhanh hơn không, là tự chèn bằng chương trình sau lại phải kiểm tra lại từng dòng.

Có tâm giúp mới theo chủ đề này bạn nhé, còn bạn không làm rõ thì đợi tiếp vậy.
 
Lần chỉnh sửa cuối:
Upvote 0
Không có gì quá cả, nhưng người giúp muốn hỏi rõ hơn để tìm giải pháp nào cho hay nhất. Vì chưa thông thì sao tìm phương án tốt nhất cho bạn được (không phải vặn vẹo - nếu cứ nói thế thì ai hỏi cũng là vặn ah), không nói rõ sao giúp?

Những thông tin hỏi trên, trả lời trong tầm tay của bạn có chi phải không nói, ví dụ 1 ngày có giải pháp khác, add nhiều sheet cùng lúc giải pháp khác, từng 1 sheet thì giải pháp khác.

Lâu lâu mới add và công việc đơn giản thì ta làm bằng các thao tác thường thì sẽ giúp vừa làm vừa kiểm tra luôn, phải nhanh hơn không, là tự chèn bằng chương trình sau lại phải kiểm tra lại từng dòng.

Có tâm giúp mới theo chủ đề này bạn nhé, còn bạn không làm rõ thì đợi tiếp vậy.

Cảm ơn bạn. Thường thì công việc của tôi không cố định, vì còn tùy thuộc vào tình hình lắp trạm. Có tháng thì cứ vài ngày lắp 1 trạm, có lúc thì hòa mạng vài trạm cùng lúc. Nhưng tôi chỉ cần bạn giúp cho tôi cách để mỗi lần add 1 trạm là được rồi. Nếu có thể thì lấy số thứ tự các dòng theo thứ tự sắp xếp của sheet luôn. Như vậy cho dễ bề sắp xếp theo dõi.
 
Upvote 0
Cảm ơn bạn. Thường thì công việc của tôi không cố định, vì còn tùy thuộc vào tình hình lắp trạm. Có tháng thì cứ vài ngày lắp 1 trạm, có lúc thì hòa mạng vài trạm cùng lúc. Nhưng tôi chỉ cần bạn giúp cho tôi cách để mỗi lần add 1 trạm là được rồi. Nếu có thể thì lấy số thứ tự các dòng theo thứ tự sắp xếp của sheet luôn. Như vậy cho dễ bề sắp xếp theo dõi.

Cũng cần rõ hơn

- bạn chèn sheet kiểu nào: cộng sheet mới hoàn toàn, hay là copy sheet cũ thành mới rồi đổi,
- nếu cộng she et mới hoàn toàn thì khác

túm lại cần mô tả muốn sao, bấm nút chọn she et mới thêm vào, hay là khi tự động chạy khi add sheet mới hoàn toàn???
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng cần rõ hơn

- bàn chèn sheet kiểu nào: cộng sheet mới hoàn toàn, hay là copy sheet cũ thành mới rồi đổi,
- nếu cộng she et mới hoàn toàn thì khác

túm lại cần mô tả muốn sao, bấm nút chọn she et mới thêm vào, hay là khi tự động chạy khi add sheet mới hoàn toàn???
Mình thường làm là click phải chuột vào sheet cũ, chọn Move or copy rồi chọn copy thành sheet mới. Như vậy để giữ form của sheet và cũng cho nhanh, chỉ cần thay đổi số liệu là thành trạm mới. Và mình muốn tự động chạy khi add sheet mới.
Và tự xóa dòng khi xóa sheet.
 
Upvote 0
Mình thường làm là click phải chuột vào sheet cũ, chọn Move or copy rồi chọn copy thành sheet mới. Như vậy để giữ form của sheet và cũng cho nhanh, chỉ cần thay đổi số liệu là thành trạm mới. Và mình muốn tự động chạy khi add sheet mới.
Và tự xóa dòng khi xóa sheet.

Khó rùi, thế phụ thuộc vào events, và lại là copy nữa,
Tôi sẽ thử sức, nhưng không hứa trước, mong các thành viên khác giúp bạn và có giải pháp hay hơn.
 
Upvote 0
Khó rùi, thế phụ thuộc vào events, và lại là copy nữa,
Tôi sẽ thử sức, nhưng không hứa trước, mong các thành viên khác giúp bạn và có giải pháp hay hơn.
Cảm ơn bạn. Nếu cách copy khó khả thi hơn việc tạo sheet mới hoàn toàn thì bạn cứ giúp tôi cách tạo sheet mới cũng được nhé.
 
Upvote 0
Mình thường làm là click phải chuột vào sheet cũ, chọn Move or copy rồi chọn copy thành sheet mới. Như vậy để giữ form của sheet và cũng cho nhanh, chỉ cần thay đổi số liệu là thành trạm mới. Và mình muốn tự động chạy khi add sheet mới.
Và tự xóa dòng khi xóa sheet.

1/ Phải làm sao cho tất cả dữ liệu cần lấy phải cùng địa chỉ ô, ví dụ số liệu Cổng đã lắp đặt cùng ô D3...
2/ Tên sheet không dùng tiếng Việt có dấu (viết trong code rất khó)
3/ Khi chịu như vậy thì xem file này
 

File đính kèm

Upvote 0
1/ Phải làm sao cho tất cả dữ liệu cần lấy phải cùng địa chỉ ô, ví dụ số liệu Cổng đã lắp đặt cùng ô D3...
2/ Tên sheet không dùng tiếng Việt có dấu (viết trong code rất khó)
3/ Khi chịu như vậy thì xem file này
Cảm ơn anh. Em có thể khắc phục việc lấy dữ liệu cùng địa chỉ ô bằng cách trang trí lại cái phần báo cáo phía trên tý là ok.
Còn mục tên sheet em thấy em add sheet mới bằng tiếng việt có dấu vẫn OK. CHỉ có sheet "Báo cáo chung" là phải sửa lại thành không dấu thôi.
Cảm ơn sự giúp đỡ của anh Ba Tê và giola. Thế này là quá tuyệt rồi.
Cho em hỏi thêm chút là có thể làm nó tự động chạy luôn mà không cần ấn vào cái nút GPE có được không? Nếu làm thế thì có gì không tốt hơn hay không ạ?
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh. Em có thể khắc phục việc lấy dữ liệu cùng địa chỉ ô bằng cách trang trí lại cái phần báo cáo phía trên tý là ok.
Còn mục tên sheet em thấy em add sheet mới bằng tiếng việt có dấu vẫn OK. CHỉ có sheet "Báo cáo chung" là phải sửa lại thành không dấu thôi.
Cảm ơn sự giúp đỡ của anh Ba Tê và giola. Thế này là quá tuyệt rồi. Nhưng cho em hỏi thêm một chút là có cách nào để nó tự động chạy luôn chứ không cần nhấn vào nút GPE nữa không ạ.

Cho cái Sub nó chạy với sự kiện Worksheet_Activate()
Mà sao "làm biếng" đến độ 1 cái click chuột mà cũng không muốn
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy giải pháp của Ba Tê trên đã được chưa, click chỉ 1 lần nhưng được tất cả?

và Bạn muốn gì khác?

Đã ổn rồi bạn ạ. Mấy hôm nay đi tập huấn nên chưa có thời gian làm tiếp. Mình sẽ cố gắng hoàn thiện file hơn. Sẽ còn nhờ các bạn và anh chị GPE giúp đỡ nhiều.
Xin cảm ơn rất nhiều!!!!
 
Upvote 0
Anh Ba Tê và giola xem xét hộ em chỗ này với ạ. Trong cái bảng baocaochung em có sử dung Conditional Formatting để định dạng, nhưng khi sử dụng code của a Ba Tê sau khi em ấn nút GPE để thống kê thì CF không còn hoạt động nữa. Xin giúp em thêm đoạn code để cho CF vẫn làm việc được sau khi thống kê với ạ.
 
Upvote 0
Anh Ba Tê và giola xem xét hộ em chỗ này với ạ. Trong cái bảng baocaochung em có sử dung Conditional Formatting để định dạng, nhưng khi sử dụng code của a Ba Tê sau khi em ấn nút GPE để thống kê thì CF không còn hoạt động nữa. Xin giúp em thêm đoạn code để cho CF vẫn làm việc được sau khi thống kê với ạ.

Phần code đó của a Ba Tê thì chắc phải đợi, còn tôi thì không xem kỹ được nên không sửa hộ được.
 
Upvote 0
Anh Ba Tê và giola xem xét hộ em chỗ này với ạ. Trong cái bảng baocaochung em có sử dung Conditional Formatting để định dạng, nhưng khi sử dụng code của a Ba Tê sau khi em ấn nút GPE để thống kê thì CF không còn hoạt động nữa. Xin giúp em thêm đoạn code để cho CF vẫn làm việc được sau khi thống kê với ạ.
Tìm dòng này:
[A8:J110].Clear
Thay bằng:
[A8:J110].ClearContents
Mọi chuyện format gì đó của bạn thì bạn tự lo.
 
Upvote 0
Tìm dòng này:
[A8:J110].Clear
Thay bằng:
[A8:J110].ClearContents
Mọi chuyện format gì đó của bạn thì bạn tự lo.
Em làm được rồi, cảm ơn anh.
Anh cho em hỏi thêm:
dArr(K, 2) = Ws.Name
With Sheets(Ws.Name)
Dòng này là để nó định dạng tên theo tên sheet mới đúng không ạ. Bây giờ nếu em muốn nó không lấy theo tên sheet mà lấy theo một ô nào đó trong sheet nhưng vẫn đảm bảo các đoạn code phía sau không ảnh hưởng thì em phải làm sao? Em muốn hỏi để thử áp dụng vào file khác một cách tương tự xem sao ạ.
 
Upvote 0
Em làm được rồi, cảm ơn anh.
Anh cho em hỏi thêm:
dArr(K, 2) = Ws.Name
With Sheets(Ws.Name)
Dòng này là để nó định dạng tên theo tên sheet mới đúng không ạ. Bây giờ nếu em muốn nó không lấy theo tên sheet mà lấy theo một ô nào đó trong sheet nhưng vẫn đảm bảo các đoạn code phía sau không ảnh hưởng thì em phải làm sao? Em muốn hỏi để thử áp dụng vào file khác một cách tương tự xem sao ạ.

Mấy hôm nay đi tập huấn nên không vào diễn đàn được, vậy mà vẫn chưa có ai trả lời dùm em. Nhờ anh Ba Tê, giola và các bạn khác hỗ trợ em với ạ. Bạn giola có giải pháp nào hay hơn không có thể giúp em để tham khảo hoàn thiện hơn được không ạ.
Cho em hỏi thêm một chút trong code của anh Ba Tê nếu có một số sheet ngoài các sheet F,D,M em không muốn nó hiện lên ở trong BaoCaoChung thì em phải sửa code thành thế nào???
 
Upvote 0
Mấy hôm nay đi tập huấn nên không vào diễn đàn được, vậy mà vẫn chưa có ai trả lời dùm em. Nhờ anh Ba Tê, giola và các bạn khác hỗ trợ em với ạ. Bạn giola có giải pháp nào hay hơn không có thể giúp em để tham khảo hoàn thiện hơn được không ạ.
Cho em hỏi thêm một chút trong code của anh Ba Tê nếu có một số sheet ngoài các sheet F,D,M em không muốn nó hiện lên ở trong BaoCaoChung thì em phải sửa code thành thế nào???

- Thường thì người giúp sẽ xem người hỏi có còn trên diễn đàn không, mới tính chuyện giúp hay không.
Chứ người ta quăng bài lên xong "đi ngủ", mình ngồi làm bài thì cũng "ngại".
- Nếu bạn thấy khả năng chỉnh sửa code không được thì đưa file lên, nêu rõ những yêu cầu muốn giúp, hỏi chung chung, không thấy dữ liệu thật mặt mũi nó ra sao, làm sao nắm được quy luật thực tế trên file thế nào thì làm sao giúp.
 
Upvote 0
- Thường thì người giúp sẽ xem người hỏi có còn trên diễn đàn không, mới tính chuyện giúp hay không.
Chứ người ta quăng bài lên xong "đi ngủ", mình ngồi làm bài thì cũng "ngại".
- Nếu bạn thấy khả năng chỉnh sửa code không được thì đưa file lên, nêu rõ những yêu cầu muốn giúp, hỏi chung chung, không thấy dữ liệu thật mặt mũi nó ra sao, làm sao nắm được quy luật thực tế trên file thế nào thì làm sao giúp.
Em xin lỗi, vì phải đi tập huấn nên mới im lặng vì không có thời gian chứ không phải "ngủ" đâu ạ. Anh chờ chút để em chỉnh lại file rồi up lên ạ.
 
Upvote 0
Em gửi kèm file đây ạ.
Ở Sheet BaoCaoChung em muốn chỉ những sheet bắt đầu bằng chữ F,D,M như trong code lúc trước anh giúp em được thống kê, còn những sheet khác như "BCMang VT" thì sẽ không được thống kê.
Ở sheet BCMang VT em cũng muốn thống kê tương tự như sheet "BaoCaoChung" nhưng thay vì muốn lấy tên trạm là tên sheet thì em muốn thống kê theo mục "Tên trạm trong hệ thống" ở ô D2. trên mỗi sheet. Các mục em tô màu đỏ cũng được thống kê tương tự như sheet "BaoCaoChung" nhưng chỉ thay đổi các cột đó còn các cột còn lại khi thống kê thì giữ nguyên chứ không bị Clear và sau khi thêm mới thì có thể điền thủ công vào.
Nhờ anh và các bạn giúp đỡ ạ.
 
Upvote 0
Em gửi kèm file đây ạ.
Ở Sheet BaoCaoChung em muốn chỉ những sheet bắt đầu bằng chữ F,D,M như trong code lúc trước anh giúp em được thống kê, còn những sheet khác như "BCMang VT" thì sẽ không được thống kê.
Ở sheet BCMang VT em cũng muốn thống kê tương tự như sheet "BaoCaoChung" nhưng thay vì muốn lấy tên trạm là tên sheet thì em muốn thống kê theo mục "Tên trạm trong hệ thống" ở ô D2. trên mỗi sheet. Các mục em tô màu đỏ cũng được thống kê tương tự như sheet "BaoCaoChung" nhưng chỉ thay đổi các cột đó còn các cột còn lại khi thống kê thì giữ nguyên chứ không bị Clear và sau khi thêm mới thì có thể điền thủ công vào.
Nhờ anh và các bạn giúp đỡ ạ.

- BaoCaoChung thì chỉnh được theo 3 chữ đầu: D, F, M
- BCMang VT, nếu cột B là cố định (Nhập thủ công) thì thua vì có nhiều dòng trùng tên, chẳng biết của sheet nào.
Chỉ làm được khi lấy dữ liệu cùng lúc với dữ liệu của 4 cột L:O của từng sheet như trong file.
Muốn thay đổi nội dung trong cột B thì thay đổi nồi dung ô D2 của các sheet.
Muốn thay đổi thứ tự trong cột B thì thay đổi thứ tự các sheet.
 

File đính kèm

Upvote 0
- BaoCaoChung thì chỉnh được theo 3 chữ đầu: D, F, M
- BCMang VT, nếu cột B là cố định (Nhập thủ công) thì thua vì có nhiều dòng trùng tên, chẳng biết của sheet nào.
Chỉ làm được khi lấy dữ liệu cùng lúc với dữ liệu của 4 cột L:O của từng sheet như trong file.
Muốn thay đổi nội dung trong cột B thì thay đổi nồi dung ô D2 của các sheet.
Muốn thay đổi thứ tự trong cột B thì thay đổi thứ tự các sheet.

Ok rồi anh ạ. Em mò mãi sửa theo code của anh mà nó cứ mất hết mấy cái cột kia --=0. Em cảm ơn anh nhiều. Có gì em sẽ nhờ anh giúp tiếp.
 
Upvote 0
Public Sub BC_Mang()
Application.ScreenUpdating = False
Dim Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 4), tArr(1 To 100, 1 To 1), K As Long, Tem As String
sArr = Range([B10], [B10].End(xlDown)).Value
For Each Ws In Worksheets
If Left(Ws.Name, 1) = "D" Or Left(Ws.Name, 1) = "F" Or Left(Ws.Name, 1) = "M" Then
K = K + 1
With Sheets(Ws.Name)
Select Case Left(Ws.Name, 1)
Case "D"
Tem = "IP DSLAM"
Case "F"
Tem = "L2 SWITCH"
Case "M"
Tem = "MINI ZTE"
End Select
tArr(K, 1) = .[D2].Value
dArr(K, 1) = Tem
dArr(K, 2) = .[D3].Value
dArr(K, 3) = .[D4].Value
dArr(K, 4) = .[G3].Value
End With
End If
Next Ws
Range("A10:A100").EntireRow.Hidden = False
[B10].Resize(K) = tArr
[L10:O10].Resize(K) = dArr
Range("A" & 10 + K & ":A100").EntireRow.Hidden = True
End Sub


Anh Ba Tê cho em hỏi trong đoạn code trên của anh em muốn Hyperlink ở các các ô chứa loại thiết bị (IPDSLAM,SWICHL2...) như ở mục BaoCaoChung thì em phải thêm như thế nào vào nữa.

Hoặc ở code này:
Public Sub BAOCAO()Dim Ws As Worksheet, dArr(), K As Long, Cll As Range, Str As String
Application.ScreenUpdating = False
ReDim dArr(1 To Worksheets.Count, 1 To 10)
For Each Ws In Worksheets
If Left(Ws.Name, 1) = "D" Or Left(Ws.Name, 1) = "F" Or Left(Ws.Name, 1) = "M" Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = Ws.Name
With Sheets(Ws.Name)
dArr(K, 4) = .[D3].Value
dArr(K, 5) = .[J3].Value
dArr(K, 6) = .[D4].Value
dArr(K, 7) = .[G3].Value
dArr(K, 8) = .[G4].Value
dArr(K, 9) = .[L3].Value
dArr(K, 10) = .[L4].Value
End With
End If
Next Ws
Rows("8:110").EntireRow.Hidden = False
[A8:J110].ClearContents
[A8].Resize(K, 10) = dArr
[A8].Resize(K, 10).Borders.LineStyle = 1
Range("A" & 8 + K & ":A110").EntireRow.Hidden = True
For Each Cll In Range("B8").Resize(K)
If Left(Cll, 1) = "D" Then
Str = "IP DSLAM"
ElseIf Left(Cll, 1) = "F" Then
Str = "L2 SWITCH"
ElseIf Left(Cll, 1) = "M" Then
Str = "MINI ZTE"
Else
Str = "NONE"
End If
Cll.Hyperlinks.Delete
Cll.Offset(, 1).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'" & Cll.Value & "'!A1", TextToDisplay:=Str
Next Cll
End Sub

Em muốn đổi đoạn "dArr(K, 2) = Ws.Name" thành "dArr(K, 2) = .[D2].Value" thì em phải làm sao. Em đổi nó ra cột B đúng nhưng cột C lại bị lỗi và hỏng luôn Hypelink @!##@!##@!##

Em ngồi biến tấu nhồi nhét 2 cái code của anh mãi mà không được nên phải hỏi. +-+-+-++-+-+-++-+-+-++-+-+-++-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0
Anh Ba Tê cho em hỏi trong đoạn code trên của anh em muốn Hyperlink ở các các ô chứa loại thiết bị (IPDSLAM,SWICHL2...) như ở mục BaoCaoChung thì em phải thêm như thế nào vào nữa.

Hoặc ở code này:


Em muốn đổi đoạn "dArr(K, 2) = Ws.Name" thành "dArr(K, 2) = .[D2].Value" thì em phải làm sao. Em đổi nó ra cột B đúng nhưng cột C lại bị lỗi và hỏng luôn Hypelink @!##@!##@!##

Em ngồi biến tấu nhồi nhét 2 cái code của anh mãi mà không được nên phải hỏi. +-+-+-++-+-+-++-+-+-++-+-+-++-+-+-+

Biến tấu không được thì xem file này.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
À, em hiểu rồi, anh lấy cái tên sheet đưa sang cột K rồi sau đó xóa luôn. Thế mà em chẳng nghĩ ra. Cảm ơn anh nhiều

Vì sửa lại từ Sub cũ.
Nếu viết lại theo kiểu Sub BC_Mang thì như vầy, không cần gán xuống cột K rồi xoá.
PHP:
Public Sub BC_Mang()
Application.ScreenUpdating = False
Dim Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 4), tArr(1 To 100, 1 To 2)
Dim K As Long, Tem As String, Cll As Range, I As Long, Str As String
sArr = Range([B10], [B10].End(xlDown)).Value
For Each Ws In Worksheets
    If Left(Ws.Name, 1) = "D" Or Left(Ws.Name, 1) = "F" Or Left(Ws.Name, 1) = "M" Then
        K = K + 1
            Select Case Left(Ws.Name, 1)
                Case "D"
                    Tem = "IP DSLAM"
                Case "F"
                    Tem = "L2 SWITCH"
                Case "M"
                    Tem = "MINI ZTE"
            End Select
        With Sheets(Ws.Name)
            tArr(K, 1) = .[D2].Value
            tArr(K, 2) = Ws.Name
            dArr(K, 1) = Tem
            dArr(K, 2) = .[D3].Value
            dArr(K, 3) = .[D4].Value
            dArr(K, 4) = .[G3].Value
        End With
    End If
Next Ws
Range("A10:A100").EntireRow.Hidden = False
[B10:B100].ClearContents
[L10:O100].ClearContents
[B10].Resize(K) = tArr
[L10:O10].Resize(K) = dArr
Range("A" & 10 + K & ":A100").EntireRow.Hidden = True
For Each Cll In Range("L10").Resize(K)
    I = I + 1
    Cll.Hyperlinks.Delete
    ActiveSheet.Hyperlinks.Add Anchor:=Cll, Address:="", SubAddress:= _
        "'" & tArr(I, 2) & "'!A1", TextToDisplay:=Cll.Value
Next Cll
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vì sửa lại từ Sub cũ.
Nếu viết lại theo kiểu Sub BC_Mang thì như vầy, không cần gán xuống cột K rồi xoá.
PHP:
Public Sub BC_Mang()
Application.ScreenUpdating = False
Dim Ws As Worksheet, sArr(), dArr(1 To 100, 1 To 4), tArr(1 To 100, 1 To 2)
Dim K As Long, Tem As String, Cll As Range, I As Long, Str As String
sArr = Range([B10], [B10].End(xlDown)).Value
For Each Ws In Worksheets
    If Left(Ws.Name, 1) = "D" Or Left(Ws.Name, 1) = "F" Or Left(Ws.Name, 1) = "M" Then
        K = K + 1
            Select Case Left(Ws.Name, 1)
                Case "D"
                    Tem = "IP DSLAM"
                Case "F"
                    Tem = "L2 SWITCH"
                Case "M"
                    Tem = "MINI ZTE"
            End Select
        With Sheets(Ws.Name)
            tArr(K, 1) = .[D2].Value
            tArr(K, 2) = Ws.Name
            dArr(K, 1) = Tem
            dArr(K, 2) = .[D3].Value
            dArr(K, 3) = .[D4].Value
            dArr(K, 4) = .[G3].Value
        End With
    End If
Next Ws
Range("A10:A100").EntireRow.Hidden = False
[B10:B100].ClearContents
[L10:O100].ClearContents
[B10].Resize(K) = tArr
[L10:O10].Resize(K) = dArr
Range("A" & 10 + K & ":A100").EntireRow.Hidden = True
For Each Cll In Range("L10").Resize(K)
    I = I + 1
    Cll.Hyperlinks.Delete
    ActiveSheet.Hyperlinks.Add Anchor:=Cll, Address:="", SubAddress:= _
        "'" & tArr(I, 2) & "'!A1", TextToDisplay:=Cll.Value
Next Cll
End Sub

Công thức các ô D4 của các sheet "F" đều bị Circular:
PHP:
D4=COUNTIF(D:D;"A")+COUNTIF(D:D;"A+M")
Mà tại sao công thức nào cũng "chơi" cả cột vậy? Ví dụ D7:D1000 là quá dư rồi, bảo nó làm việc với cả triệu dòng chi cho "mất sức"?
 
Upvote 0
Mở sheet mới, nhập số gì đó vào D1:D3
Thử nhập D4=sum(D1:D4) xem sao.
Đối chiếu lại công thức ô D4 của bạn.
Híc!
Em hiểu nếu làm như anh là công thức bị xoay vòng. Nhưng công thức của em ở ô D4 sheet F chỉ tính tổng các ô có chữ "A" và "A+M" thôi mà. Thú thực là cái đầu óc ngu muội của em vẫn chưa ngộ ra được điều gì cả. hic
 
Upvote 0
Em hiểu nếu làm như anh là công thức bị xoay vòng. Nhưng công thức của em ở ô D4 sheet F chỉ tính tổng các ô có chữ "A" và "A+M" thôi mà. Thú thực là cái đầu óc ngu muội của em vẫn chưa ngộ ra được điều gì cả. hic

Đã hiểu là bị "xoay vòng" thì nghĩa là bị "xoay vòng".
Range D:D (nghĩa là D1:D1048576) có dính D4 trong đó không?
D4=Countif(D:D,...) là dính rồi.
Và bạn chưa trả lời hoặc suy nghĩ đến câu này trên bài #30:
Mà tại sao công thức nào cũng "chơi" cả cột vậy? Ví dụ D7:D1000 là quá dư rồi, bảo nó làm việc với cả triệu dòng chi cho "mất sức"?
 
Upvote 0
Đã hiểu là bị "xoay vòng" thì nghĩa là bị "xoay vòng".
Range D:D (nghĩa là D1:D1048576) có dính D4 trong đó không?
D4=Countif(D:D,...) là dính rồi.
Và bạn chưa trả lời hoặc suy nghĩ đến câu này trên bài #30:
Em hiểu ý anh rồi. Em để thế vì em nghĩ trong các ô từ D1:D6 là không chứa ký tự "A" hoặc "A+M".
Còn về cái chơi cả cột thì em làm thế ... cho nhanh.(Ai ngờ làm nó file chậm hơn) --=0 Anh góp ý em đã sửa lại cả rồi ạ.
 
Upvote 0
ANh cho em hỏi thêm tại sao ở các ô D4 em để nguyên thì nó hiện kết quả bình thường, nhưng khi em click đúp vào ô thì sau đó nó không hiện kết quả nữa mà nó hiện công thức như trong hình luôn. Trong khi nếu em để nguyên là D:D như cũ thì không bị.
1.jpg
 
Upvote 0
ANh cho em hỏi thêm tại sao ở các ô D4 em để nguyên thì nó hiện kết quả bình thường, nhưng khi em click đúp vào ô thì sau đó nó không hiện kết quả nữa mà nó hiện công thức như trong hình luôn. Trong khi nếu em để nguyên là D:D như cũ thì không bị.
View attachment 138509

Chỉ có thể do Format Cells nó là Text.
Cho nó thành General hoặc Number xem.
 
Upvote 0

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

Back
Top Bottom