quyenpv
Thu nhặt kiến thức
- Tham gia
- 5/1/13
- Bài viết
- 725
- Được thích
- 97
- Giới tính
- Nam
- Nghề nghiệp
- Decode cuộc đời!
Em có bảng phân tích vật tư trong dự toán, nhờ anh chị viết code giúp em tính vật liệu, nhân công, máy thi công từ bảng phân tích và đơn giá có sẵn. Cám ơn anh chị nhiều
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
sArr = [K5:N5].Value
For J = 1 To 4
Dic.Add sArr(1, J), J
Next J
sArr = Range([D7], [D65536].End(xlUp)).Offset(, -1).Resize(, 7).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1) - 1
If sArr(I, 1) <> Empty Then
dArr(I, 1) = sArr(I, 1)
For J = I + 1 To UBound(sArr, 1)
If sArr(J, 1) = Empty Then
K = K + 1
Tem = sArr(J, 2)
If Dic.Exists(Tem) Then dArr(I, Dic.Item(Tem)) = sArr(J, 7)
Else
I = I + K: K = 0
Exit For
End If
Next J
End If
Next I
[K7].Resize(UBound(sArr, 1), 4) = dArr
Set Dic = Nothing
End Sub
Bác ơi sao em insert module copy vào Module1 rồi save file với định dạng .xlsm mà khi đánh "=gpe(B7:I7)" mà không dc, bác chỉ cho em với.
Các bác ơi gíup em với! Sao em insert module copy vào Module1 rồi save file với định dạng .xlsm. Đóng Excel rồi mở file vừa lưu với định dạng .xlsm, click chuột chọn View/Macros/View Macros, hiện ra của sổ Macro rồi click vao Run thì chỉ có cột "Mã CV" là hiển thị kết quả còn cột VL, NC, MTC không hiển thị.
Hi, em làm dc rồi, cám ơn bác nhiều nhé!
Bác cho em hỏi làm thế nào tạo dc nút GPE vậy?
PHP:Public Sub GPE() Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Dic As Object Set Dic = CreateObject("Scripting.Dictionary") sArr = [K5:N5].Value For J = 1 To 4 Dic.Add sArr(1, J), J Next J sArr = Range([D7], [D65536].End(xlUp)).Offset(, -1).Resize(, 7).Value ReDim dArr(1 To UBound(sArr, 1), 1 To 4) For I = 1 To UBound(sArr, 1) - 1 If sArr(I, 1) <> Empty Then dArr(I, 1) = sArr(I, 1) For J = I + 1 To UBound(sArr, 1) If sArr(J, 1) = Empty Then K = K + 1 Tem = sArr(J, 2) If Dic.Exists(Tem) Then dArr(I, Dic.Item(Tem)) = sArr(J, 7) Else I = I + K: K = 0 Exit For End If Next J End If Next I [K7].Resize(UBound(sArr, 1), 4) = dArr Set Dic = Nothing End Sub
Các bác ơi, giúp em với, nếu file của em như thế này thì Code sửa như thế nào? Cảm ơn các bác nhiều!
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
sArr = [K6:M6].Value
For J = 1 To 3
Dic.Add sArr(1, J), J
Next J
sArr = Range([D8], [D65536].End(xlUp)).Offset(, -2).Resize(, 8).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1) - 1
If sArr(I, 1) <> Empty Then
dArr(I, 1) = "ke"
For J = I + 1 To UBound(sArr, 1)
If sArr(J, 1) = Empty Then
K = K + 1
Tem = sArr(J, 3)
If Dic.Exists(Tem) Then dArr(I, Dic.Item(Tem) + 1) = sArr(J, 8)
Else
I = I + K: K = 0
Exit For
End If
Next J
End If
Next I
[J8].Resize(UBound(sArr, 1), 4) = dArr
Set Dic = Nothing
End Sub
Dạ Chào anh BaTe
Liên quan tới vấn đề tính phân tích vật tư. EM cũng đang tìm cách để phân tích vật tư cho công việc của em được nhanh chóng và em đã tìm và mò vào đc đến đây. Mong anh chỉ giáo em việc này với a.
Chả là em có cái file để phân tích vật tư theo khối lượng của từng đầu việc như trong file
Mà công việc cần làm là tính cả 1 sheet 1000 công tác như thế rất mất thơi gian
Nhờ anh có cách nào điền hết tất cả các mục còn lại với công thức như trong file em đính kèm chỉ với 1 nút bấm ( và trong mỗi ô phải thể hiện công thức tính toán trong ô). E cám ơn anh nhiều rất mong anh giúp đỡ
Chỉ dùng code khi bạn thật sự hiểu về code, không là kết quả tùm lum hết cả.Dạ vâng hihi em cuống quá vì công việc được giao gấp quá. Em làm bằng tay tất cả các hạng mục gần 3000 công tác em làm ko híc. NHờ anh làm giùm em cái nút Tính để bấm cho chạy với được ko a
Bài trên vi phạm nội quy vì gửi nhiều bài cùng một nội dung ở nhiều nơi. Bạn xem bài #10 ở trên.Chỉ dùng code khi bạn thật sự hiểu về code, không là kết quả tùm lum hết cả.
File của bạn cần chi code. Công thức tại G3=VLOOKUP(MAX($A$3:$A3);$A$3:G3;COLUMN();0)*$E4*(1+$F4). Filter Blank cột A rồi copy paste cho toàn bảng.
Lưu ý: Chắc cú thì đánh số thứ tự lại cho toàn bộ cột A bằng công thức Max()+1. Đặt công thức bằng cách filter Nonblank cột A. Phút mốt à!!