Có vẻ hơi lạm dụng VBAtự động tính toán
Cứ phải phức tạp hoá quá làm gì trong khi các công cụ excel đã có sẵn, nhiều khi các công cụ có sẵn còn tiện và nhanh hơn VBA nhiều màCó vẻ hơi lạm dụng VBA
Sub dongcuoi()
Dim ws As Worksheet
Dim lg As Long
lg = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To lg
Sheet1.Range("F2").Formula = "=CONCATENATE(A2,""_"",B2,""_"",D2)"
Sheet1.Range("F2:E" & lg).FillDown
Next
End Sub
Sub gpe()
Dim c1&, c2&, c3&, r&, s$
On Error Resume Next
c1 = Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[hoten]", , , 1).Column
c2 = Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[tobando]", , , 1).Column
c3 = Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[sothua]", , , 1).Column
If c1 = 0 Or c2 = 0 Or c3 = 0 Then
s = Application.Trim(IIf(c1 = 0, "[hoten] ", "") & IIf(c2 = 0, "[tobando] ", "") & IIf(c3 = 0, "[sothua] ", ""))
MsgBox "Kiem tra cot: " & s, vbOKOnly, "Canh bao"
Else
r = Sheet1.Cells(1048576, c1).End(xlUp).Row - 1
If r > 0 Then
ReDim Arr(1 To r, 1 To 1)
For i = 1 To r
Arr(i, 1) = Sheet1.Cells(i + 1, c1) & "_" & Sheet1.Cells(i + 1, c2) & "_" & Sheet1.Cells(i + 1, c3)
Next i
Sheet1.Cells(2, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Resize(r, 1).Value = Arr
End If
End If
End Sub
Sub gpe()
Dim c1$, c2$, c3$, s$, r&
On Error Resume Next
c1 = Replace(Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[hoten]", , , 1).Address(0, 0), 1, "") & "2"
c2 = Replace(Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[tobando]", , , 1).Address(0, 0), 1, "") & "2"
c3 = Replace(Sheet1.Cells(1, 1).Resize(1, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Find("[sothua]", , , 1).Address(0, 0), 1, "") & "2"
If c1 = "" Or c2 = "" Or c3 = "" Then
s = Application.Trim(IIf(c1 = "", "[hoten] ", "") & IIf(c2 = "", "[tobando] ", "") & IIf(c3 = "", "[sothua] ", ""))
MsgBox "Kiem tra cot: " & s, vbOKOnly, "Canh bao"
Else
r = Sheet1.Cells(1048576, Replace(c1, "2", "")).End(xlUp).Row - 1
If r > 0 Then
Sheet1.Cells(2, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Formula = "=CONCATENATE(" & c1 & ",""_""," & c2 & ",""_""," & c3 & ")"
Sheet1.Cells(2, Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column).Resize(r, 1).FillDown
End If
End If
End Sub
Nếu dòng tiêu đề mà lặp lại từ 2 cái điều kiện giống nhau thì Find có vẻ hoạt động không đúngBạn thử code sau để giữ lại công thức như file bạn có ban đầu nhé
Đã nói đến hai từ tiêu đề thì thiết tưởng cũng cần nhắc quý vị rằng tiêu đề của thớt này phạm quy nhé (tiêu đề chung chung)Nếu dòng tiêu đề mà lặp lại từ 2 cái điều kiện giống nhau thì Find có vẻ hoạt động không đúng
...
Có vẻ hơi lạm dụng các vị ham code.Có vẻ hơi lạm dụng VBA
Bị lên cơn nghiện chú ạ. Giờ mới để ý tên chủ đề có vấn đề.Có vẻ hơi lạm dụng các vị ham code.
Hi, chiều em ấy chút điFlash Fill của Excel là siêu siêu cấp của tự động ấy chứ. Bạn viết code xong rồi cũng phải ấn nút, gõ tên hàm các kiểu.