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

Chào các anh chị,
Để dễ dàng hơn cho việc hướng dẫn, em sẽ đặt từng câu hỏi một rồi sẽ ráp từng module lại để tạo thành bài hoàn chỉnh. Vậy câu hỏi đầu tiên là: Làm cách nào để em có thể lọc được thông tin trên bảng dữ liệu gốc để lấy được thông tin em cần ra xử lý. Cụ thể là em muốn lấy ở cột E là nguồn A, sau đó ở cột F là chân nguồn RNBC. Đây chỉ là trường hợp cụ thể là em đã biết được đối tượng mình cần chọn, nhưng hiện tại ở cột F có 2 đối tượng là (RNBC và RNAC) vậy làm cách nào để sau khi lấy được thông tin của RNBC rồi thì sẽ tự động tiếp tục lấy thông tin của RNAC ra để xử lý cho hình vẽ tiếp theo vì đấy là 2 hình vẽ khác nhau ạ. Nhờ các anh chị hướng dẫn em giải quyết vấn đề này, em cảm ơn!
 
Upvote 0
Chào các anh chị,
Để dễ dàng hơn cho việc hướng dẫn, em sẽ đặt từng câu hỏi một rồi sẽ ráp từng module lại để tạo thành bài hoàn chỉnh. Vậy câu hỏi đầu tiên là: Làm cách nào để em có thể lọc được thông tin trên bảng dữ liệu gốc để lấy được thông tin em cần ra xử lý. Cụ thể là em muốn lấy ở cột E là nguồn A, sau đó ở cột F là chân nguồn RNBC. Đây chỉ là trường hợp cụ thể là em đã biết được đối tượng mình cần chọn, nhưng hiện tại ở cột F có 2 đối tượng là (RNBC và RNAC) vậy làm cách nào để sau khi lấy được thông tin của RNBC rồi thì sẽ tự động tiếp tục lấy thông tin của RNAC ra để xử lý cho hình vẽ tiếp theo vì đấy là 2 hình vẽ khác nhau ạ. Nhờ các anh chị hướng dẫn em giải quyết vấn đề này, em cảm ơn!

Bấm nút GPE trong sheet Data xem kết quả có phải "giống" ý bạn muốn không rồi sẽ tính tiếp.
 

File đính kèm

Upvote 0
Em chào anh Ba tê,
Vâng ạ, đây là cái em cần. Xin cảm ơn anh rất nhiều về sự giúp đỡ. Nhưng anh có thể ghi chú giúp em trên từng dòn code không ạ, vì em debug để xem cách anh viết nhưng không thấy được macro xử lý dữ liệu ra sao. Điều quan trọng em muốn đăng hỏi trên diễn đàn ngoài việc có được kết quả mong muốn, còn muốn được học hỏi thêm kiến thức mới, cách làm mới để sau này không phải hỏi lại câu này lần nữa mà tự có thể làm được. Em rất ngưỡng mộ cách anh viết, vì chỉ có vài dòng lệnh là anh đã giải quyết được các vấn đề. Xin cảm ơn anh một lần nữa ạ!
 
Upvote 0
Em chào anh Ba tê,
Vâng ạ, đây là cái em cần. Xin cảm ơn anh rất nhiều về sự giúp đỡ. Nhưng anh có thể ghi chú giúp em trên từng dòn code không ạ, vì em debug để xem cách anh viết nhưng không thấy được macro xử lý dữ liệu ra sao. Điều quan trọng em muốn đăng hỏi trên diễn đàn ngoài việc có được kết quả mong muốn, còn muốn được học hỏi thêm kiến thức mới, cách làm mới để sau này không phải hỏi lại câu này lần nữa mà tự có thể làm được. Em rất ngưỡng mộ cách anh viết, vì chỉ có vài dòng lệnh là anh đã giải quyết được các vấn đề. Xin cảm ơn anh một lần nữa ạ!

- Nếu đúng ý bạn thì xem lại file này, dữ liệu điền vào các ô có kẻ khung sẵn của bạn.
- Code là tôi "học lóm" trên GPE này thôi. Chỉ biết viết mà không biết "giải thích", bạn thông cảm.
 

File đính kèm

Upvote 0
Anh Ba Tê cho em hỏi thêm, em muốn mở rộng ra thêm trường hợp của bài này là nếu như ở cột H và I trong sheet Data có dữ liệu về PDF vậy thì em hình vẽ của em sẽ có thêm một phần tử là Rack PDF như trong trường hợp 1 của sheet 1, tương tự như vậy, nếu trong bảng data của em nếu như khuyết đi một trong các phần tử nào đó thì phần tử đó sẽ không có trong sơ đồ mà thay vào đó là những đường kẻ đấu nối xuyên suốt. Vì vậy tùy từng trường hợp trong bảng Data mà em có được từng sơ đồ khác nhau vị trí như trong sheet 1 ạ. Phiền anh xem giúp em vấn đề này, vì điều khó nhất của em lúc này là em chưa hiểu được cách viết của anh nên rất khó phát triển được ý tưởng như em mong muốn ạ. Xin cảm ơn anh một lần nữa về sự giúp đỡ này, chúc anh nhiều sức khỏe!
 
Upvote 0
Anh Ba Tê cho em hỏi thêm, em muốn mở rộng ra thêm trường hợp của bài này là nếu như ở cột H và I trong sheet Data có dữ liệu về PDF vậy thì em hình vẽ của em sẽ có thêm một phần tử là Rack PDF như trong trường hợp 1 của sheet 1, tương tự như vậy, nếu trong bảng data của em nếu như khuyết đi một trong các phần tử nào đó thì phần tử đó sẽ không có trong sơ đồ mà thay vào đó là những đường kẻ đấu nối xuyên suốt. Vì vậy tùy từng trường hợp trong bảng Data mà em có được từng sơ đồ khác nhau vị trí như trong sheet 1 ạ. Phiền anh xem giúp em vấn đề này, vì điều khó nhất của em lúc này là em chưa hiểu được cách viết của anh nên rất khó phát triển được ý tưởng như em mong muốn ạ. Xin cảm ơn anh một lần nữa về sự giúp đỡ này, chúc anh nhiều sức khỏe!

Muốn làm gì thì cũng có kiểu dữ liệu và kiểu kết quả để xem mặt mũi nó ra sao. cột H,I của bạn đều là N/A thì lấy cái nào? Tôi không cùng ngành với bạn thì sao tự ví dụ kết quả được.
 
Upvote 0
Em gửi lại anh và mọi người file em tự vẽ tay các trường hợp. Trong sheet 1 đã thể hiện đầy đủ 4 trường hợp theo yêu cầu , và sheet bảng dữ liệu em đã đưa vào them thông tin của rack PDF và đã có vẽ thêm khối PDF ở sheet 2. Mong tiếp tục nhận được sự giúp đỡ của anh và mọi người. Xin cảm ơn!
 

File đính kèm

Upvote 0
Em gửi lại anh và mọi người file em tự vẽ tay các trường hợp. Trong sheet 1 đã thể hiện đầy đủ 4 trường hợp theo yêu cầu , và sheet bảng dữ liệu em đã đưa vào them thông tin của rack PDF và đã có vẽ thêm khối PDF ở sheet 2. Mong tiếp tục nhận được sự giúp đỡ của anh và mọi người. Xin cảm ơn!

Lấy dữ liệu theo mẫu kết quả, còn chuyện kẻ khung ... thì bạn tự tính nhé.
 

File đính kèm

Upvote 0
Tuyệt vời rồi anh ạ. Nhân tiện anh sửa lại một tí nữa giúp em ở cột N phần đầu mục "Tủ nguồn DCHT..." sheet GPE_X được gán giá trị theo trong bảng data chứ không phải là giá trị cố định ạ. Giống như anh đã làm cho cột K đấy ạ. Do file đầu tiên em vẽ nhầm, anh thông cảm giúp em ạ.
 
Upvote 0
Tuyệt vời rồi anh ạ. Nhân tiện anh sửa lại một tí nữa giúp em ở cột N phần đầu mục "Tủ nguồn DCHT..." sheet GPE_X được gán giá trị theo trong bảng data chứ không phải là giá trị cố định ạ. Giống như anh đã làm cho cột K đấy ạ. Do file đầu tiên em vẽ nhầm, anh thông cảm giúp em ạ.

Tìm đâu đó trong code có dòng này:

Mã:
dArr(K, 11) = TN

Sửa thành
Mã:
dArr(K, 11) = Left(TN, 9) & sArr(I, 10)
 
Upvote 0
Tuyệt vời rồi anh ạ. Nhân tiện anh sửa lại một tí nữa giúp em ở cột N phần đầu mục "Tủ nguồn DCHT..." sheet GPE_X được gán giá trị theo trong bảng data chứ không phải là giá trị cố định ạ. Giống như anh đã làm cho cột K đấy ạ. Do file đầu tiên em vẽ nhầm, anh thông cảm giúp em ạ.

Nhưng tôi tự hỏi rằng. Trong Sheet Data của bạn đã được Sắp xếp theo thứ tự (sort sẵn) thì code theo như kiểu trên thì ra. Liệu có khi nào đó data của bạn sắp xếp ngẫu nhiên? thì sao đây? (chưa được sort)??? Vậy thì áp dụng code trên sẽ chưa được...
 
Upvote 0
Cám ơn bạn linhcute2000 đã góp ý, đúng thật là khi mình tráo thử vị trí các hàng với nhau thì dữ liệu biên dịch sang sơ đồ bị lệch lạc vị trí thông tin và không còn đúng nữa.
@@Chào anh Ba tê và các anh/chị: Tối qua em đã test thử các trường hợp thì ngoài trường hợp của bạn Linh có nhắc thì nếu như em nhập thêm nhiều các dữ liệu khác nữa thì code không xử lý được ạ. Thêm nữa là sau khi sắp xếp dữ liệu vào đúng vị trí em sẽ tìm cách để tự động vẽ lại các đường bao và đấu nối để thành một sơ đồ hoàn chỉnh. Nên cần phải thống nhất được vị trí chính xác của dữ liệu, vậy thì sẽ thống nhất như sau: Các ô D8,G8,K8,N8 là luôn luôn cố định và khoảng cách giữa 2 hình vẽ trên dưới cách nhau 4 dòng(tức là ở dòng cuối của bảng dữ liệu đầu tiên cách ra 4 dòng sẽ bắt đầu lặp lại sơ đồ tương tự). Trước mắt mục tiêu là sẽ xử lý dữ liệu sao cho sắp xếp đúng các vị trí yêu cầu trước đã, sau đó sẽ xử lý format hoặc vẽ ô sau. Em có gửi lại một bảng sơ đồ dữ liệu đấu nối với trường hợp số chân nguồn đã là nhiều nhất có thể rồi để có thể thấy được nhiều trường hợp hơn cho bài toán này. Mong nhận được sự giúp đỡ của các huynh. Xin cảm ơn!
 

File đính kèm

Upvote 0
Chào các anh/chị,
Chắc có lẽ do em nói chung chung quá, và phần dữ liệu đầu vào thì mù mịt nên có lẽ khó cho mọi người hiểu và giúp đỡ em. Nên em đã ngồi vẽ lại sơ đồ và xử lý thô lại phần dữ liệu đầu vào để cho mọi người đọc và dễ hiểu rồi ạ. Trong sơ đồ em đã có ghi chú tất cả các yêu cầu của bài toán để tránh phải giải thích nhiều làm mọi người khó hiểu. Mong mọi người đọc và giúp em việc này vì đây là một trong số module mà dự án của em sẽ phải hoàn thành sắp tới. Xin cảm ơn mọi người
 

File đính kèm

Upvote 0
Chào các anh/chị,
Chắc có lẽ do em nói chung chung quá, và phần dữ liệu đầu vào thì mù mịt nên có lẽ khó cho mọi người hiểu và giúp đỡ em. Nên em đã ngồi vẽ lại sơ đồ và xử lý thô lại phần dữ liệu đầu vào để cho mọi người đọc và dễ hiểu rồi ạ. Trong sơ đồ em đã có ghi chú tất cả các yêu cầu của bài toán để tránh phải giải thích nhiều làm mọi người khó hiểu. Mong mọi người đọc và giúp em việc này vì đây là một trong số module mà dự án của em sẽ phải hoàn thành sắp tới. Xin cảm ơn mọi người

Nhiệm vụ của bạn là bấm nút và kẻ khung trong sheet GPE123 theo ý bạn nhé.
 

File đính kèm

Upvote 0
Xin cảm ơn anh rất nhiều, em sẽ hoàn thành công đoạn cuối ạ. Việc kẻ khung cũng là hoàn toàn auto chứ không phải kẻ tay nên cũng hơi rắc rối anh ạ, nên phải đọc hiểu đoạn code của anh trước khi viết tiếp bước kế ạ. Các anh/chị khác đóng góp thêm để em sớm hoàn thiện bài toán với ạ. Em xin cảm ơn
 
Upvote 0
Xin cảm ơn anh rất nhiều, em sẽ hoàn thành công đoạn cuối ạ. Việc kẻ khung cũng là hoàn toàn auto chứ không phải kẻ tay nên cũng hơi rắc rối anh ạ, nên phải đọc hiểu đoạn code của anh trước khi viết tiếp bước kế ạ. Các anh/chị khác đóng góp thêm để em sớm hoàn thiện bài toán với ạ. Em xin cảm ơn

Thất nghiệp nên kẻ khung cho giống mẫu của bạn luôn.
 
Upvote 0
Thất nghiệp nên kẻ khung cho giống mẫu của bạn luôn.
Hj, được anh giúp vậy thì tốt quá, em vẫn phải đang ngồi soi code của anh để hoc lóm đây ạ. À anh ơi, anh thêm giúp em một dòng lệnh ở đâu đó để khi nó duyệt qua ký tự N/A thì chuyển sang trạng thái rỗng luôn được không ạ?
 
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 ạ
 
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
 

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
Hix, chắc nhắc đến vụ tô màu làm anh Ba tê giận mà hết ngó nghiêng đến bài này rồi. 2 ngày nay vật vã tập viết, cơ bản là em đã hoàn thiện được tool theo ý muốn của em. Nhưng có vẻ như đoạn code chưa được tối ưu lắm, nhờ các anh chị xem qua chỉnh sửa sao cho ngắn gọn và tối ưu với ạ. Quan điểm lần này sẽ nói rõ ràng hơn là: "Quy tắc đấu nối thực tế sẽ đấu nối rack thiết bị vào nhiều nhất chỉ 2 tủ nguồn chuẩn hoặc 2 PDF. Theo đúng quy định này thì từ CB Tủ Rack ra đến CB tủ nguồn chuẩn chỉ tồn tại 2 kết nối, nếu trong dữ liệu import vào có tồn tại từ 3 đấu nối trở lên macro sẽ báo lỗi". Dựa theo quan điểm này và "học lóm" cách viết của huynh Ba tê em hoàn thiện được đoạn code bên dưới theo ý mình. Anh chị xem đóng góp giúp em, để còn học hỏi thêm cách viết khác, em không muốn tự sướng nữa đâu ạ :( :(
 

File đính kèm

Upvote 0
Hix lần này phải anh Ba tê hoặc cao thủ mới giúp em được mất hôm nay mang test thử tool này thì gặp một thiết bị nó chẳng đúng cho trường hợp nào của tool cả mà là kết hợp giữa 2 cách của em và anh Ba tê viết trước đây lại, do trên thiết bị này có nhiều rack khác nhau mà mỗi rack có cách đấu nguồn khác nhau. Có cách nào kết hợp giữa 2 cách lại mà để chạy cho con thiết bị này không ạ, em gửi file đính kèm thông tin đấu nối của thiết bị và các anh xem qua sheet các trường hợp đấu nối sẽ hiểu ý em. Lưu ý là trước đây sau khi xử lý dữ liệu xong rồi ta mới kẻ khung, điều này dẫn đến việc là một node có nhiều rack và mỗi rack có cách đấu nối nguồn khác nhau nên việc kẻ khung và xử lý dữ liệu không còn đúng nữa. Các anh giúp em kết hợp các trường hợp này lại thành một cách viết được không ạ, anh Ba tê hay các cao thủ khác giúp em một lần nữa đi ạ. Em cảm ơn!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom