Xin giúp đỡ add mảng vào Dictionary

Liên hệ QC

LYSM

Thành viên thường trực
Tham gia
16/3/11
Bài viết
290
Được thích
26
Em chào cả nhà,
Em có đoạn code như sau:
Mã:
If Not Dic.exists( CL(i, 1) ) Then
Dic.Add  CL(i, 1), Array(CL(i, 1), CL(i, 2), CL(i, 3), CL(i,4), Cl(i,5))
End If
Code chạy bình thường, nhưng giờ nếu array có khoảng 20 phần tử thêm vào thì sẽ rất mất công, em sửa lại thành:
Mã:
If Not Dic.exists( CL(i, 1) ) Then
For j=1 to 5
Dic.Add  CL(i, 1), Array(CL(i,j))
Next j
End If
thì code báo lỗi, vậy có cách nào add array vào mà không phải liệt kê từng phần tử ra không ạ?
Em cám ơn!
 
Em chào cả nhà,
Em có đoạn code như sau:
Mã:
If Not Dic.exists( CL(i, 1) ) Then
Dic.Add  CL(i, 1), Array(CL(i, 1), CL(i, 2), CL(i, 3), CL(i,4), Cl(i,5))
End If
Code chạy bình thường, nhưng giờ nếu array có khoảng 20 phần tử thêm vào thì sẽ rất mất công, em sửa lại thành:
Mã:
If Not Dic.exists( CL(i, 1) ) Then
For j=1 to 5
Dic.Add  CL(i, 1), Array(CL(i,j))
Next j
End If
thì code báo lỗi, vậy có cách nào add array vào mà không phải liệt kê từng phần tử ra không ạ?
Em cám ơn!
Tạo mảng chứa các phần tử sau đó add vào
 
Upvote 0
Dim arr as variant 'để dưới dòng Sub
'...
'...
If Not Dic.exists( CL(i, 1) ) Then
Redim arr(1 to 5)
For j=1 to 5
arr(j) = CL(i,j)
Next j
Dic.Add CL(i, 1), arr
End If
 
Upvote 0
Code của bạn cho biết bạn không đủ căn bản về cách hoạt động của Array lẫn Dictionary để viết ứng dụng.
Đạon code:
If Not Dic.exists( CL(i, 1) ) Then
For j=1 to 5
Dic.Add CL(i, 1), Array(CL(i,j))
Next j
End If
Chỉ xét exists 1 lần những add 5 lần cho nên lỗi.
Nếu sửa lại thành xét exists mỗi lần add thì sẽ hết lỗi (run time).
For j=1 to 5
If Not Dic.exists( CL(i, 1) ) Then
Dic.Add CL(i, 1), Array(CL(i,j))
End If
Next j
Nhưng làm vậy sẽ vô nghĩa bởi vì nó chỉ add được 1 lần thôi: trị array đầu tiên.
Nếu sửa lại thành chỉnh giá trị item thì cũng sẽ hết lỗi (run time).
For j=1 to 5
Dic(CL(i, 1)) = Array(CL(i,j))
Next j
Nhưng làm vậy cũng vô nghĩa bởi vì rốt cuộc cũng chỉ được 1 trị: trị array cuối cùng.

Rốt cuộc thì bạn muốn add cái gì? Nếu muốn cả các phần tử 5 cột từ 1 đến 5 thì code như sau:
Dic(CL(i, 1)) = Array( Array(CL(i,1)), Array(CL(i,2)), Array(CL(i,3)), Array(CL(i,4)), Array(CL(i,5) )
 
Upvote 0
Nếu ít phần tử thì cách 1 hiệu quả hơn, nhưng nếu có vài chục phần tử em nghĩ cách 2 hiệu quả hơn nhiều chứ.
Nếu số phần tử nhiều và nhồi nhét hết vào Dic có thể làm Dic bị béo phì chạy ì ạch, chỉ cần add thứ tự dòng i vào Item :p
 
Upvote 0
Code của bạn cho biết bạn không đủ căn bản về cách hoạt động của Array lẫn Dictionary để viết ứng dụng.
Đạon code:

Chỉ xét exists 1 lần những add 5 lần cho nên lỗi.
Nếu sửa lại thành xét exists mỗi lần add thì sẽ hết lỗi (run time).
For j=1 to 5
If Not Dic.exists( CL(i, 1) ) Then
Dic.Add CL(i, 1), Array(CL(i,j))
End If
Next j
Nhưng làm vậy sẽ vô nghĩa bởi vì nó chỉ add được 1 lần thôi: trị array đầu tiên.
Nếu sửa lại thành chỉnh giá trị item thì cũng sẽ hết lỗi (run time).
For j=1 to 5
Dic(CL(i, 1)) = Array(CL(i,j))
Next j
Nhưng làm vậy cũng vô nghĩa bởi vì rốt cuộc cũng chỉ được 1 trị: trị array cuối cùng.

Rốt cuộc thì bạn muốn add cái gì? Nếu muốn cả các phần tử 5 cột từ 1 đến 5 thì code như sau:
Dic(CL(i, 1)) = Array( Array(CL(i,1)), Array(CL(i,2)), Array(CL(i,3)), Array(CL(i,4)), Array(CL(i,5) )
Cám ơn bác đã góp ý, em không hiểu, không có căn bản nên em mới lên đây hỏi. Câu hỏi của em đã được các bác ở bên trên giải đáp và đã đúng với nhu cầu của em
 
Upvote 0
Vậy nên trước khi tìm hiểu tới các thư viện/ công cụ hỗ trợ thì cần nắm chắc phần Array đã. :p
 
Upvote 0
Nếu số phần tử nhiều và nhồi nhét hết vào Dic có thể làm Dic bị béo phì chạy ì ạch, chỉ cần add thứ tự dòng i vào Item :p
Dạ, em cám ơn, vậy em sẽ theo cách cũ add những phần tử nào cần thiết.
Bài đã được tự động gộp:

Vậy nên trước khi tìm hiểu tới các thư viện/ công cụ hỗ trợ thì cần nắm chắc phần Array đã. :p
Do công việc chính của em là việc khác (em làm bên QA, QC), tự mày mò sẽ lâu nên em nghĩ lên trên này hỏi các bác là một cách học nhanh nhất. Kiến thức của em chỉ là kiến thức cóp nhặt nên chỉ hiểu lờ mờ và hổng nhiều, vừa học vừa làm cũng là một cách để bổ sung sự thiếu hụt kiến thức bác ạ.
 
Upvote 0
...

Do công việc chính của em là việc khác (em làm bên QA, QC), tự mày mò sẽ lâu nên em nghĩ lên trên này hỏi các bác là một cách học nhanh nhất. Kiến thức của em chỉ là kiến thức cóp nhặt nên chỉ hiểu lờ mờ và hổng nhiều, vừa học vừa làm cũng là một cách để bổ sung sự thiếu hụt kiến thức bác ạ.
Không nhanh như bạn tưởng đâu. Phương pháp học hanh chỉ dùng để chắp vá. Phương pháp học vững chãi cần hiểu rõ mình muốn gì.
Con ngựa chạy nhanh nhất là con ngựa chỉ dùng để đua. Nó không đủ sức chạy đường trường.

Côngn việc của sếp tôi cũng chả phải lập trình, nhưng bà ấy (sếp tôi là nữ) rất am hiểu về căn bản lập trình.
 
Upvote 0
Không nhanh như bạn tưởng đâu. Phương pháp học hanh chỉ dùng để chắp vá. Phương pháp học vững chãi cần hiểu rõ mình muốn gì.
Con ngựa chạy nhanh nhất là con ngựa chỉ dùng để đua. Nó không đủ sức chạy đường trường.

Côngn việc của sếp tôi cũng chả phải lập trình, nhưng bà ấy (sếp tôi là nữ) rất am hiểu về căn bản lập trình.
Vâng, biết là dục tốc bất đạt bác ạ, nhưng với mỗi người, mỗi tư chất, mỗi nhu cầu, mỗi hoàn cảnh khác nhau sẽ có những con đường khác nhau. Nó giống như trong thế giới tự nhiên, có loài đứng đầu chuỗi thức ăn, nhưng cũng có những loài thấp kém như cây cỏ, dưới cây cỏ lại có bùn đất, nó tạo thành một hệ sinh thái hoàn chỉnh. Như sếp của bác chẳng hạn, bà ấy có thiên tư tốt, thời vận tốt, ý chí tốt nên mới được làm sếp. Nhưng nếu ai cũng làm sếp hết thì lấy đâu ra người làm nhân viên, em hiểu rõ khả năng của mình đến đâu nên cũng không cưỡng cầu điều gì, trong tất cả mọi lĩnh vực của cuộc sống, miễn mình thấy vui vẻ, hạnh phúc là được. Vài dòng chia sẻ với bác.
 
Upvote 0
Tại bạn nói mình là dân QA, QC (tôi đoán có lẽ QA là Quality Assurance, và QC là Quality Control) cho nên tôi mới lấy làm lạ là bạn học quá hấp tấp.
 
Upvote 0
Tại bạn nói mình là dân QA, QC (tôi đoán có lẽ QA là Quality Assurance, và QC là Quality Control) cho nên tôi mới lấy làm lạ là bạn học quá hấp tấp.
Thì đúng rồi bác, công việc của em chủ yếu là làm trong phòng lab, với hóa chất, dụng cụ, thiết bị thí nghiệm là chính, có sử dụng excel cũng chỉ mấy công thức đơn giản (bác thấy nick em lập từ năm 2011 nhưng sinh hoạt trên diễn đàn này không nhiều). Dăm thì mười họa mới cần đến những công cụ chuyên sâu như thế này, tuần đi làm 6 ngày về nhà thì 2 con nhỏ (1 thằng 2 tuổi 1 thằng 9 tháng) làm gì còn thời gian mà nghiền ngẫm những kiến thức trái ngành nữa. Và cũng như em đã nói ở trên, mỗi người có 1 lựa chọn phù hợp với con người của mình, em cái gì cũng thích, cũng muốn biết nhưng không sâu được.
 
Upvote 0
Thì đúng rồi bác, công việc của em chủ yếu là làm trong phòng lab, với hóa chất, dụng cụ, thiết bị thí nghiệm là chính, có sử dụng excel cũng chỉ mấy công thức đơn giản (bác thấy nick em lập từ năm 2011 nhưng sinh hoạt trên diễn đàn này không nhiều). Dăm thì mười họa mới cần đến những công cụ chuyên sâu như thế này, tuần đi làm 6 ngày về nhà thì 2 con nhỏ (1 thằng 2 tuổi 1 thằng 9 tháng) làm gì còn thời gian mà nghiền ngẫm những kiến thức trái ngành nữa. Và cũng như em đã nói ở trên, mỗi người có 1 lựa chọn phù hợp với con người của mình, em cái gì cũng thích, cũng muốn biết nhưng không sâu được.
Nếu công việc của bạn không bắt buộc phải dùng Excel hàng ngày ở độ chuyên sâu thì không đáng bỏ công ra học Excel. Tôi có thằng bạn làm ở Mỏ vài chục năm, kiến thức và kinh nghiệm đầy mình. Hồi cách đây 10 năm vẫn nhờ tôi cài Windows, cài các phần mềm lớn. Nó bảo mỗi người có một nghề, nếu ai cũng tự học để sửa ống nước, lắp đặt hệ thống sưởi, xây nhà, lát sàn thì thợ người ta thất nghiệp à. Mà thời gian để học Excel nó có thể dùng để phụ đạo sinh viên ngành Mỏ, kiếm bộn tiền. Sau đó khi năm thì mười hoạ cần tới Excel thì thậm chí nó chi tiền để đặt hàng. Mình kiếm được từ sinh viên thì mình lại cho những người học Excel họ kiếm sữa cho con, kiếm váy cho vợ. Như thế là chuẩn. Không ai bỏ thời gian để học Excel khi chỉ năm thì mười hoạ mới dùng tới. Và khi cũng trong thời gian ấy có thể kiếm bộn tiền nhờ kiến thức và kinh nghiệm trong chuyên môn của mình.
 
Upvote 0
Nếu công việc của bạn không bắt buộc phải dùng Excel hàng ngày ở độ chuyên sâu thì không đáng bỏ công ra học Excel. Tôi có thằng bạn làm ở Mỏ vài chục năm, kiến thức và kinh nghiệm đầy mình. Hồi cách đây 10 năm vẫn nhờ tôi cài Windows, cài các phần mềm lớn. Nó bảo mỗi người có một nghề, nếu ai cũng tự học để sửa ống nước, lắp đặt hệ thống sưởi, xây nhà, lát sàn thì thợ người ta thất nghiệp à. Mà thời gian để học Excel nó có thể dùng để phụ đạo sinh viên ngành Mỏ, kiếm bộn tiền. Sau đó khi năm thì mười hoạ cần tới Excel thì thậm chí nó chi tiền để đặt hàng. Mình kiếm được từ sinh viên thì mình lại cho những người học Excel họ kiếm sữa cho con, kiếm váy cho vợ. Như thế là chuẩn. Không ai bỏ thời gian để học Excel khi chỉ năm thì mười hoạ mới dùng tới. Và khi cũng trong thời gian ấy có thể kiếm bộn tiền nhờ kiến thức và kinh nghiệm trong chuyên môn của mình.
Theo tôi thì học Excel không tốn phí thời giờ như bác nghĩ.
Cấu trúc và nguyên tắc làm việc của bảng tính Excel tương đối đi sát với việc làm tính toán trên một bảng tính trải rộng.
Chỉ vì nó phổ biến ở VN không phải từ giai đoạn ban đầu cho nên người ta rất ít khi chịu học "thế nào là một bảng tính trải rộng?"

Tôi được cái "may mắn" là tiếp xúc với spreadsheet trước, thời còn làm tay, rồi mới ứng dụng Lotus 123.
Lúc tôi xài Excel 4 thì VBA là phần mềm phải mua gắn thêm cho nên tôi không có dịp lạm dụng nó.

Vấn đề của thớt chỉ là không chuyên ngành mà lại muốn học nhanh, bỏ qua quá nhiều căn bản. Không cần thiết thì học chi? Có chăng là do đam mê? Mà đam mê thì phải học cho đúng gốc đúng ngọn.
 
Upvote 0
Nếu công việc của bạn không bắt buộc phải dùng Excel hàng ngày ở độ chuyên sâu thì không đáng bỏ công ra học Excel. Tôi có thằng bạn làm ở Mỏ vài chục năm, kiến thức và kinh nghiệm đầy mình. Hồi cách đây 10 năm vẫn nhờ tôi cài Windows, cài các phần mềm lớn. Nó bảo mỗi người có một nghề, nếu ai cũng tự học để sửa ống nước, lắp đặt hệ thống sưởi, xây nhà, lát sàn thì thợ người ta thất nghiệp à. Mà thời gian để học Excel nó có thể dùng để phụ đạo sinh viên ngành Mỏ, kiếm bộn tiền. Sau đó khi năm thì mười hoạ cần tới Excel thì thậm chí nó chi tiền để đặt hàng. Mình kiếm được từ sinh viên thì mình lại cho những người học Excel họ kiếm sữa cho con, kiếm váy cho vợ. Như thế là chuẩn. Không ai bỏ thời gian để học Excel khi chỉ năm thì mười hoạ mới dùng tới. Và khi cũng trong thời gian ấy có thể kiếm bộn tiền nhờ kiến thức và kinh nghiệm trong chuyên môn của mình.
Vâng, em đồng quan điểm với bác về việc này, có thể em hỏi đoạn nhỏ nên mọi người tưởng em đang dành thời gian để học viết code, thực chất là em đang làm việc mà có file cần xử lý bằng excel, do không muốn quăng cả file lên để nhờ mọi người phải làm hộ vì như thế thì ỷ lại quá. Chúc bác cuối tuần vui vẻ.
Bài đã được tự động gộp:

Theo tôi thì học Excel không tốn phí thời giờ như bác nghĩ.
Cấu trúc và nguyên tắc làm việc của bảng tính Excel tương đối đi sát với việc làm tính toán trên một bảng tính trải rộng.
Chỉ vì nó phổ biến ở VN không phải từ giai đoạn ban đầu cho nên người ta rất ít khi chịu học "thế nào là một bảng tính trải rộng?"

Tôi được cái "may mắn" là tiếp xúc với spreadsheet trước, thời còn làm tay, rồi mới ứng dụng Lotus 123.
Lúc tôi xài Excel 4 thì VBA là phần mềm phải mua gắn thêm cho nên tôi không có dịp lạm dụng nó.

Vấn đề của thớt chỉ là không chuyên ngành mà lại muốn học nhanh, bỏ qua quá nhiều căn bản. Không cần thiết thì học chi? Có chăng là do đam mê? Mà đam mê thì phải học cho đúng gốc đúng ngọn.
Dạ, em hiểu những gì bác nói, và bác đang hiểu nhầm là em đang học code. Vấn đề của em là giải quyết xong công việc, đạt được mục tiêu và công việc được giao thôi, có thể nói đây không phải là học, code em tự viết ra cũng chạy tương đối ổn nhưng còn một số chỗ chưa ưng ý, em chỉ nghĩ mình làm được phần nào thì cố gắng làm, nếu không làm nổi mới đi hỏi nên em mới hỏi 1 đoạn nhỏ trong code khiến bác hiểu lầm là em đang dành thời gian để học viết code. Chúc bác cuối tuần vui vẻ
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi không chủ yếu nói chuyện cần học Excel hay VBA gì cả.
Tôi chủ yếu cảnh báo những người "muốn học nhanh" thôi. Học nhanh thì phải biết mình đã hy sinh, bỏ lướt qua những gì.
 
Upvote 0
Web KT

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

Back
Top Bottom