Nhờ giúp đỡ thực hiện: Biên dịch bảng dữ liệu đấu nối thành hình vẽ đơn giản (1 người xem)

Liên hệ QC

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

VBA_198x

Thành viên mới
Tham gia
16/4/16
Bài viết
34
Được thích
1
Chào các anh/chị,
Em có bảng dữ liệu về đấu nối nguồn (sheet 3), nhiệm vụ của em là thể hiện đấu nối nguồn này thành các hình vẽ trong excel (sơ đồ hình vẽ trong từng trường hợp nằm ở sheet 1). Vị trí các ô trong hình vẽ là cố định, vì vậy các phần tử đấu nối sẽ là cố định. Nếu các phần tử trong bảng excel là trống thì mặc nhiên phần tử đó trong hình vẽ sẽ được bỏ qua (như từng trường hợp đấu nối ở sheet 1). Tùy theo các thiết bị khác nhau thì số kết nối sẽ tăng hoặc giảm khác nhau, không cố định, nên sơ đồ sẽ lớn nhỏ tùy theo số kết nối. Do phải nộp báo cáo sớm, mà em chưa có nhiều kinh nghiệm viết VBA nên việc viết code sẽ rất dài và chưa tối ưu được nên nhờ các anh/chị giúp đỡ viết cùng em về bài này ạ. Xin cảm ơn!
 

File đính kèm

Anh Ba tê ơi,
Đoạn code trên vẫn còn bị vướng một trường hợp là nếu như giá trị của cột L và cột I là N/A (nghĩa là không tồn tại CB cho khối Rack_PDF và Tunguonchuan) nhưng code vẫn tiếp tục chạy để tạo ra giá trị là RackPDF_N/A hoặc Tunguonchuan_N/A việc này là chưa chính xác, nên nhờ anh giúp em sửa lại một tí rằng nếu như duyệt thấy giá trị của phần tử trong cột L hoặc I có giá trị là N/A thì để trống ô đó luôn, xem như không có kết nối ạ. Em có sửa lại một tí trên đoạn anh viết để có được theo ý này, anh xem giúp em đúng không ạ.Còn cách vẽ khung và kết nối em vẫn chưa nghĩ ra,nhờ anh giúp em luôn nha a
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh Ba tê ơi,
Đoạn code trên vẫn còn bị vướng một trường hợp là nếu như giá trị của cột L và cột I là N/A (nghĩa là không tồn tại CB cho khối Rack_PDF và Tunguonchuan) nhưng code vẫn tiếp tục chạy để tạo ra giá trị là RackPDF_N/A hoặc Tunguonchuan_N/A việc này là chưa chính xác, nên nhờ anh giúp em sửa lại một tí rằng nếu như duyệt thấy giá trị của phần tử trong cột L hoặc I có giá trị là N/A thì để trống ô đó luôn, xem như không có kết nối ạ. Em có sửa lại một tí trên đoạn anh viết để có được theo ý này, anh xem giúp em đúng không ạ.Còn cách vẽ khung và kết nối em vẫn chưa nghĩ ra,nhờ anh giúp em luôn nha a

Của bạn đâY, chắc hết "còn vướng" rồi.
 

File đính kèm

Upvote 0
Em cảm ơn anh nhiều lắm ạ, sau lần này em học được rất nhiều từ cách viết của anh. Chỉ mong được diện kiến để đền đáp :-=
 
Upvote 0
Của bạn đâY, chắc hết "còn vướng" rồi.
Hix, anh ơi lại vướng tiếp rồi. Ông trưởng phòng em bảo là phân bố dữ liệu như vậy nhìn hơi khó nên muốn thêm một bước nữa là chèn dòng và tô thêm màu ở giữa các node thiết bị con trong sơ đồ. Em có ghi chú ở sheet ("sơ đồ new update") rồi ạ. Anh xem qua giúp em với ạ. Còn một cái nữa là em test thử nếu không phải ghi chú là N/A mà để ô rỗng phần tử đó thì macro vẫn tự tạo ra một CB mới với tên là "CB_" nên anh sửa giúp em là N/A tương đương rỗng và không tạo CB ở trường hợp đó ạ. Xin lỗi lại tiếp tục làm phiền anh, chúc anh một cuối tuần vui vẻ ạ
 

File đính kèm

Upvote 0
Hix, anh ơi lại vướng tiếp rồi. Ông trưởng phòng em bảo là phân bố dữ liệu như vậy nhìn hơi khó nên muốn thêm một bước nữa là chèn dòng và tô thêm màu ở giữa các node thiết bị con trong sơ đồ. Em có ghi chú ở sheet ("sơ đồ new update") rồi ạ. Anh xem qua giúp em với ạ. Còn một cái nữa là em test thử nếu không phải ghi chú là N/A mà để ô rỗng phần tử đó thì macro vẫn tự tạo ra một CB mới với tên là "CB_" nên anh sửa giúp em là N/A tương đương rỗng và không tạo CB ở trường hợp đó ạ. Xin lỗi lại tiếp tục làm phiền anh, chúc anh một cuối tuần vui vẻ ạ

Chiều ông Sếp bạn lần này nữa thôi.
Chóng mặt với mấy cái khung, gạch và màu mè quá.
 

File đính kèm

Upvote 0
Chiều ông Sếp bạn lần này nữa thôi.
Chóng mặt với mấy cái khung, gạch và màu mè quá.
Em chào anh, hôm nay em ngồi test lại code thì lại vướng lỗi anh ạ. Với trường thiết bị chỉ có 1 hoặc 2 chân nguồn (sheet data chỉ có 2 dòng), thì chạy code lại báo lỗi. Còn từ 3 trở lên thì lại không sao, em debug chạy thì thấy vẫn đúng nhưng không hiểu sao nó cứ báo lỗi hoài, thử mọi trường hợp với dữ liệu 1 hoặc 2 chân nguồn vẫn không chạy được. Nhờ anh giúp em với ạ, em vẫn đang chạy trên file của anh gửi đấy ạ. Em cảm ơn anh
 
Upvote 0
Chào anh,
Em tham khảo trên mạng thì thấy lỗi xảy ra "subscript out of range" là vì không gian mảng dArr() đang bị thiếu dòng ạ, nhưng sau khi em tăng số dòng lên thì với trường hợp 1 đến 2 điểm đấu nối (sheet data chỉ có 2 đấu nối bất kỳ) lại bị vướng đoạn code bên dưới ạ:
"
Rw = .Range("D" & I + 3).End(xlDown).Row --- Macro đếm sai số dòng, dẫn đến giá trị Rw bị sai
Sheets"GPE123" .Range("D" & I + 3 & ":N" & Rw).Sort Key1:=.Range("D" & J + 3), Key2:=.Range("G" & J + 3) --- Sau khi filter thì dữ liệu của khối bên dưới lại nhảy linh tinh cả lên dẫn đến khi kẻ khung bị sai vị trí".

Nhờ anh xem giúp em với ạ, em cảm ơn anh
 
Upvote 0
Các anh/chị khác có ý kiến đóng góp gì thêm để giúp em khắc phục lỗi này không ạ.
 
Upvote 0
Các anh/chị khác có ý kiến đóng góp gì thêm để giúp em khắc phục lỗi này không ạ.

Có đóng góp với bạn là từ đầu phải đưa dữ liệu "ảo" nhưng đầy đủ các trường hợp xảy ra để người giúp dự kiến làm 1 lần là xong. Đến bài #25 mà còn vướng là do dữ liệu không đủ các trường hợp mà thực tế có thể xảy ra. Người ngoài ngành đâu ai dự kiến hết cho bạn.
Tôi có sửa "thí đại" một chút trong file bài #25 của nick Ba Tê, bạn xem lại coi còn vướng nữa không nhé.
 
Lần chỉnh sửa cuối:
Upvote 0
Có đóng góp với bạn là từ đầu phải đưa dữ liệu "ảo" nhưng đầy đủ các trường hợp xảy ra để người giúp dự kiến làm 1 lần là xong. Đến bài #25 mà còn vướng là do dữ liệu không đủ các trường hợp mà thực tế có thể xảy ra. Người ngoài ngành đâu ai dự kiến hết cho bạn.
Tôi có sửa "thí đại" một chút trong file bài #25 của nick Ba Tê, bạn xem lại coi còn vướng nữa không nhé.

2 Nick này là 1 người mà...ai chả biết...--=0--=0--=0
 
Upvote 0
Có đóng góp với bạn là từ đầu phải đưa dữ liệu "ảo" nhưng đầy đủ các trường hợp xảy ra để người giúp dự kiến làm 1 lần là xong. Đến bài #25 mà còn vướng là do dữ liệu không đủ các trường hợp mà thực tế có thể xảy ra. Người ngoài ngành đâu ai dự kiến hết cho bạn.
Tôi có sửa "thí đại" một chút trong file bài #25 của nick Ba Tê, bạn xem lại coi còn vướng nữa không nhé.

Em chào anh,
Code này vẫn bị lỗi như em nói ạ. Em gửi lại anh file đính kèm, anh thử chạy lại với các trường hợp sau sẽ thấy lỗi tương tự ạ:
1. Run với trường hợp chỉ có 2 đấu nối trong sheet data (lưu ý chạy với cả 2 trường hợp cột F "Rack thiết bị" là cùng hoặc khác rack)-Hiện đang báo lỗi "Subscript out of range" .
2. Run với trường hợp chỉ có 1 đấu nối trong sheet data (xóa đi 1 dòng dữ liệu)-- Trường hợp này sẽ báo lỗi "out of memory"
 

File đính kèm

Upvote 0
Chào các anh/chị,
Sau khi nghịch một hồi thì em đã khắc phục được trường hợp 1, bằng cách tăng không gian mảng cho dArr(), sau đó chỉnh sửa lại một tí đoạn sort dữ liệu để dữ liệu không bị nhảy hàng, thì giờ có thể làm ngon lành với trường hợp 2 chân nguồn. Vậy chỉ còn có trường hợp 1 chân nguồn (như file đính kèm) là bị lỗi "Out of memory" khi Run, cụ thể là mảng sArr() khi tăng lên đến max sArr(1 to 1048575, 1 to 12) sau duyệt qua khung dữ liệu. Nhờ các huynh ra tay giúp em khắc phục trường hợp này nữa ạ là em có thể nộp bài rồi :(, em cảm ơn các anh chị
 

File đính kèm

Upvote 0
Chào các anh/chị,
Sau khi nghịch một hồi thì em đã khắc phục được trường hợp 1, bằng cách tăng không gian mảng cho dArr(), sau đó chỉnh sửa lại một tí đoạn sort dữ liệu để dữ liệu không bị nhảy hàng, thì giờ có thể làm ngon lành với trường hợp 2 chân nguồn. Vậy chỉ còn có trường hợp 1 chân nguồn (như file đính kèm) là bị lỗi "Out of memory" khi Run, cụ thể là mảng sArr() khi tăng lên đến max sArr(1 to 1048575, 1 to 12) sau duyệt qua khung dữ liệu. Nhờ các huynh ra tay giúp em khắc phục trường hợp này nữa ạ là em có thể nộp bài rồi :(, em cảm ơn các anh chị

Có 1 dòng dữ liêu tôi vẽ thủ công còn nhanh hơn viết code.
 

File đính kèm

Upvote 0
Có 1 dòng dữ liêu tôi vẽ thủ công còn nhanh hơn viết code.
Em cảm ơn anh đã sửa giúp em ạ. Còn việc không làm thủ công là tại vì ông sếp em ổng muốn sau này còn phát triển thêm nữa vấn đề này chứ không đơn thuần là chỉ có một bản sơ đồ đấu nối ạ, có thể ổng muốn lồng ghép sơ đồ này với ý tưởng nào đấy của ổng nên ổng muốn auto toàn bộ hết ạ. Em cũng chịu, là lính sai đâu đánh đó à anh ơi, hjhj. Cũng nhờ anh mà em hoàn thành công việc kịp deadline, không thì toạch rồi. Em cảm ơn anh một lần nữa ạ/-*+//-*+//-*+/
 
Upvote 0
Em cảm ơn anh đã sửa giúp em ạ. Còn việc không làm thủ công là tại vì ông sếp em ổng muốn sau này còn phát triển thêm nữa vấn đề này chứ không đơn thuần là chỉ có một bản sơ đồ đấu nối ạ, có thể ổng muốn lồng ghép sơ đồ này với ý tưởng nào đấy của ổng nên ổng muốn auto toàn bộ hết ạ. Em cũng chịu, là lính sai đâu đánh đó à anh ơi, hjhj. Cũng nhờ anh mà em hoàn thành công việc kịp deadline, không thì toạch rồi. Em cảm ơn anh một lần nữa ạ/-*+//-*+//-*+/

................tại vì ông sếp em ổng muốn sau này còn phát triển thêm nữa vấn đề này chứ không đơn thuần là chỉ có một bản sơ đồ đấu nối ạ................................................................
Rồi sau sẽ ra sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Hix, ông sếp em thật là màu mè, ổng thích tô màu đủ kiểu, giờ thì thích tô màu luôn cả các đường đấu nối. Các anh cho em hỏi, sửa đoạn code này để đường gạch đậm lên và màu mè tí thì sửa sao cho gọn ạ:
"For Each Cll In .Range("D" & I + 3 & ":N" & Rw)
If Cll.Value = "" Then
Rw = Cll.Row
If Range("D" & Rw).Interior.ColorIndex <> 15 Then Cll.Borders(xlEdgeBottom).LineStyle = 1
End If
Next Cll"
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào các anh,
Bỏ qua vụ màu mè, hôm nay lại có tình tiết mới xử lý dữ liệu các anh ạ. Lần này phát sinh thêm một cột dữ liệu ở sheet Data (cột H). Sau khi xử lý dữ liệu thì đấu nối sẽ trở thành như sơ đồ ở sheet "Mong muốn". Em đã dựa theo cách viết của anh Ba tê để sắp xếp dữ liệu vào cột mới của sơ đồ rồi ạ, nhưng ở bước sau thì chưa nghĩ ra cách gì để làm. Nhờ anh Ba tê ra tay giúp em một lần nữa ạ. Anh giúp em lần nữa nha anh, em cám ơn ạ
 

File đính kèm

Upvote 0
Có 1 dòng dữ liêu tôi vẽ thủ công còn nhanh hơn viết code.
Em chào anh,
Em gửi lại file đính kèm đã có đầy đủ dữ liệu luôn để làm cho tường minh ạ, anh giúp em nha anh. Trước khi xem sheet "Mong muốn", anh Run tool để xem dữ liệu bố trí trước đã để dễ hiểu ý em ạ.Em cảm ơn anh
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Các anh chị có cách nào kiểm tra điều kiện ở sheet "mong muốn" không ạ. Em nghĩ hoài vẫn chưa có cách kiểm tra điều kiện này "Các phần tử ở cột H, L, O đã đi theo từng cặp cụ thể .Các kết nối tạo thành sau khi duyệt từng dòng trong khối nếu như không trùng lặp lại bất kỳ phần tử nào ở 3 cột của các kết nối duyệt trước đó. Lấy kết nối ở lần ghi đầu tiên làm chuẩn, nếu duyệt các dòng kế tiếp mà một trong 3 phần tử bị thay đổi thì macro sẽ báo lỗi". Em đã lược giản thêm ý tưởng của ông sếp thành cách khác đơn giản hơn, nhờ các anh chị giúp em giải dùm điều kiện trên để đưa vào code ạ. Em gửi lại file đính kèm, "mong muốn" mới, nhờ các anh chị ra tay giúp em với ạ
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom