Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng
Tiêu đề: [Nhờ sửa giúp] VBA trong excel list hồ sơ hoàn công [In trang] Tác giả: xhxd Thời gian: 31/12/2022 10:45 Tiêu đề: [Nhờ sửa giúp] VBA trong excel list hồ sơ hoàn công Mình thêm cột trong Excel, Giờ VBA trong excel, nhờ mọi người sửa giúp với sheet NK_2
Sub INNK_Days()
Dim dArr As Variant, sArr As Variant, tArr As Variant, Arr As Variant, S As Variant
Dim i As Long, k As Long, n As Long, sR As Long, l As Long
Dim fDay
Application.ScreenUpdating = False
With Sheets("DMCV")
dArr = .Range("E2:AG" & .Range("E65500").End(xlUp).Row).Value2
End With
With Sheets("DMVL")
sArr = .Range("D2:AG" & .Range("E65500").End(xlUp).Row).Value2
End With
With Sheets("NK_2")
fDay = Sheets("NK_2").Range("B1").Value2 ' ngay bat dau
i = Range("B3").Value2 - fDay + 1
If i < 1 Then MsgBox ("Xem lai ngay bat dau va ngay ket thuc"): Exit Sub
ReDim tArr(1 To i, 1 To 5) 'mang ghi nhan cac ngay và thu tu dong du lieu can lay
'ngay bat dau ghi vào dòng 1 cua tArr
End With
For i = 1 To UBound(dArr)
'ghi nhan dòng "ten cong viec", só 24 = thu tu cot AB - thu tu cot E +1
If Len(dArr(i, 24)) And Len(dArr(i, 25)) Then
For n = dArr(i, 24) To dArr(i, 25)
k = n - fDay + 1
tArr(k, 2) = tArr(k, 2) & "," & i
Next n
End If
'ghi nhan dòng "nhiem thu", só 19 = thu tu cot W - thu tu cot E +1
If Len(dArr(i, 19)) Then
k = dArr(i, 19) - fDay + 1
tArr(k, 3) = tArr(k, 3) & "," & i
End If
'ghi nhan dòng "lay mau TN", só 5 = thu tu cot I - thu tu cot E +1
If Len(dArr(i, 5)) Then
k = dArr(i, 5) - fDay + 1
tArr(k, 4) = tArr(k, 4) & "," & i
End If
Next i
For i = 1 To UBound(sArr)
'ghi nhan dòng "lay mau VL", só 8 = thu tu cot K - thu tu cot D +1
If Len(sArr(i, 8)) Then
k = sArr(i, 8) - fDay + 1
tArr(k, 5) = tArr(k, 5) & "," & i
End If
Next i
ReDim Arr(1 To 65000, 1 To 7)
sR = 1
For i = 1 To UBound(tArr)
If Len(tArr(i, 2)) + Len(tArr(i, 3)) + Len(tArr(i, 4)) + Len(tArr(i, 5)) Then 'neu có du lieu
Arr(sR, 1) = fDay + i - 1 'ngay có du lieu
For n = 2 To 4
If Len(tArr(i, n)) Then
k = 0
S = Split(tArr(i, n), ",")
Arr(sR, 2) = Sheets("DMCV").Range("C" & S(1) + 1).Value 'hang muc
' lay cac cot: "ten cong viec", "nhiem thu", "lay mau TN", "gio nghiem thu"
For j = 1 To UBound(S)
If n = 3 Then Arr(sR + k, 7) = dArr(S(j), 21) 'gio nghiem thu, só 21 = thu tu cot Y - thu tu cot E +1
Arr(sR + k, n + 1) = dArr(S(j), 1)
k = k + 1
Next j
End If
If tmp < sR + k Then tmp = sR + k
Next n
If Len(tArr(i, 5)) Then ' lay cot "lay mau VL"
k = 0
S = Split(tArr(i, 5), ",")
For j = 1 To UBound(S)
Arr(sR + k, 6) = sArr(S(j), 1)
k = k + 1 ' dem so dong tung ngay, cua tung cot
Next j
End If
If tmp < sR + k Then tmp = sR + k ' thu tu dong cuoi cua tung ngay
If sR + 1 = tmp Then sR = tmp + 1 Else sR = tmp ' dieu chinh thu tu dong cuoi cua tung ngay, de cot ngay co it nhat 1 dong trong
End If
Next i
With Sheets("NK_2")
.Range("A6:G50000").ClearContents
.Range("A6:G6").Resize(sR) = Arr
End With
Application.ScreenUpdating = True
End Sub
Sub Spinner_Change()
Dim dArr As Variant, sArr As Variant
Dim i As Long, k1 As Byte, k2 As Byte, k3 As Byte, k4 As Byte, k5 As Byte
Dim R1 As Byte, R2 As Byte, R3 As Byte, R4 As Byte, R5 As Byte
Dim ngay
Application.ScreenUpdating = False
R1 = 16: R2 = 44: R3 = 63: R4 = 82: R5 = 103
ngay = Range("B5").Value2
Rows("16:122").EntireRow.Hidden = False
Union(Range("A16:A42"), Range("A44:A61"), Range("A63:A80"), Range("A82:A101"), Range("A103:A122")).ClearContents
With Sheets("DMCV")
dArr = .Range("E2:AG" & .Range("E65500").End(xlUp).Row).Value2
End With
With Sheets("DMVL")
sArr = .Range("D2:AG" & .Range("E65500").End(xlUp).Row).Value2
End With
For i = 1 To UBound(dArr)
If Len(dArr(i, 24)) And Len(dArr(i, 25)) Then
If dArr(i, 24) <= ngay And dArr(i, 25) >= ngay Then
Cells(R1 + k1, 1) = dArr(i, 1)
k1 = k1 + 1
End If
End If
If dArr(i, 19) = ngay Then
Cells(R2 + k2, 1) = dArr(i, 1)
k2 = k2 + 1
End If
If dArr(i, 5) = ngay Then
Cells(R3 + k3, 1) = dArr(i, 1)
k3 = k3 + 1
End If
Next i
If k1 + R1 <= 42 Then Rows(k1 + R1 & ":39").EntireRow.Hidden = True
If k2 + R2 <= 61 Then Rows(k2 + R2 & ":58").EntireRow.Hidden = True
If k3 + R3 <= 80 Then Rows(k3 + R3 & ":77").EntireRow.Hidden = True
For i = 1 To UBound(sArr)
If sArr(i, 8) = ngay Then
Cells(R4 + k4, 1) = sArr(i, 1)
k4 = k4 + 1
End If
If sArr(i, 20) = ngay Then
Cells(R5 + k5, 1) = sArr(i, 1)
k5 = k5 + 1
End If
Next i
If k4 + R4 <= 101 Then Rows(k4 + R4 & ":98").EntireRow.Hidden = True
If k5 + R5 <= 122 Then Rows(k5 + R5 & ":119").EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub Tác giả: tranhoe Thời gian: 31/12/2022 12:48
1./ Đã sửa tiêu đề giúp Bạn. Lần sau: bài sẽ bị Xóa theo nội quy, ở đây
2./ Đưa file lên mới sửa được. Không mua Trâu vẽ Bóng.
Chào mừng ghé thăm Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng (https://xaydung360.vn/diendan/)