Hỗ trợ hoán vị 1A, 1B, 1C như file đính kèm

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Tình nghĩa giang hồ

Thanh sơn bất cải, lục thủy trường lưu
Tham gia
29/9/20
Bài viết
330
Được thích
429
Chào anh chị em có trường hợp như hình, em có viết 1 đoạn code.
Code của em hoạt động bình thường với điều kiện:
Dữ liệu cột A: có nhiều hơn 1 phần tử
Dữ liệu cột B có nhiều hơn 1 phần tử
Nhưng nếu dữ liệu cột A có 1 phần tử là báo lỗi.
Nhờ anh chị hỗ trợ giúp em trường hợp này. Cảm ơn anh chị.
Code của em
Mã:
Sub hoan_vi_1A_2B_3C()
Dim i As Long, j As Long, k As Long
Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
arr1 = Sheet1.Range("A2:A" & dong_cuoi_1).Value


dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
arr2 = Sheet1.Range("B2:B" & dong_cuoi_2).Value


ReDim arr3(1 To UBound(arr1) * UBound(arr2), 1 To 1)
For i = 1 To UBound(arr1)
    For j = 1 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
Next i

Sheet1.Range("C2:C" & UBound(arr3)).Value = arr3
End Sub
 

File đính kèm

  • 1A_2B_3C.xlsb
    16.1 KB · Đọc: 7
  • 1_OK.jpg
    1_OK.jpg
    78.3 KB · Đọc: 14
  • LỖI 1.jpg
    LỖI 1.jpg
    72.9 KB · Đọc: 14
  • LỖI 2.jpg
    LỖI 2.jpg
    65.9 KB · Đọc: 14
Chào anh chị em có trường hợp như hình, em có viết 1 đoạn code.
Code của em hoạt động bình thường với điều kiện:
Dữ liệu cột A: có nhiều hơn 1 phần tử
Dữ liệu cột B có nhiều hơn 1 phần tử
Nhưng nếu dữ liệu cột A có 1 phần tử là báo lỗi.
Nhờ anh chị hỗ trợ giúp em trường hợp này. Cảm ơn anh chị.
Code chữa cháy:
Mã:
Sub hoan_vi_1A_2B_3C()
Dim i As Long, j As Long, k As Long
Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
arr1 = Sheet1.Range("A1:A" & dong_cuoi_1).Value


dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
arr2 = Sheet1.Range("B1:B" & dong_cuoi_2).Value


ReDim arr3(1 To (UBound(arr1) - 1) * (UBound(arr2) - 1), 1 To 1)
For i = 2 To UBound(arr1)
    For j = 2 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
Next i

Sheet1.Range("C2").Resize(k, 1).Value = arr3
End Sub
 
Upvote 0
Tôi định làm thế này:
Rich (BB code):
Sub hoan_vi_1A_2B_3C()
Dim i As Long, j As Long, k As Long, U1&, U2&
Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row + 1
arr1 = Sheet1.Range("A2:A" & dong_cuoi_1).Value

dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row + 1
arr2 = Sheet1.Range("B2:B" & dong_cuoi_2).Value


ReDim arr3(1 To (UBound(arr1) - 1) * (UBound(arr2) - 1), 1 To 1)
For i = 1 To UBound(arr1) - 1
    For j = 1 To UBound(arr2) - 1
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
Next i

Sheet1.Range("C2").Resize(k, 1).Value = arr3
End Sub
 
Upvote 0
Chào anh chị em có trường hợp như hình, em có viết 1 đoạn code.
Code của em hoạt động bình thường với điều kiện:
Dữ liệu cột A: có nhiều hơn 1 phần tử
Dữ liệu cột B có nhiều hơn 1 phần tử
Nhưng nếu dữ liệu cột A có 1 phần tử là báo lỗi.
Nhờ anh chị hỗ trợ giúp em trường hợp này. Cảm ơn anh chị.
Code của em
Mã:
Sub hoan_vi_1A_2B_3C()
Dim i As Long, j As Long, k As Long
Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
arr1 = Sheet1.Range("A2:A" & dong_cuoi_1).Value


dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
arr2 = Sheet1.Range("B2:B" & dong_cuoi_2).Value


ReDim arr3(1 To UBound(arr1) * UBound(arr2), 1 To 1)
For i = 1 To UBound(arr1)
    For j = 1 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
Next i

Sheet1.Range("C2:C" & UBound(arr3)).Value = arr3
End Sub
Tên sub hoan_vi hơi lạ
Thêm cách khác, sub đầu không bị VBA la làng như các sub khác trong vài trường hợp đặc biệt
Mã:
Sub hoan_vi_1A_2B_3C()
  Dim i As Long, j As Long, k As Long
  Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
  Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

  dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
  If dong_cuoi_1 = 2 Then
    ReDim arr1(1 To 1, 1 To 1)
    arr1(1, 1) = Sheet1.Range("A2").Value
  Else
    arr1 = Sheet1.Range("A2:A" & dong_cuoi_1).Value
  End If

  dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
  If dong_cuoi_2 = 2 Then
    ReDim arr2(1 To 1, 1 To 1)
    arr2(1, 1) = Sheet1.Range("B2").Value
  Else
    arr2 = Sheet1.Range("B2:B" & dong_cuoi_2).Value
  End If

  ReDim arr3(1 To UBound(arr1) * UBound(arr2), 1 To 1)
  For i = 1 To UBound(arr1)
    For j = 1 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
  Next i

  Sheet1.Range("C2:C" & UBound(arr3)).Value = arr3
End Sub

Sub hoan_vi_1A_2B_3C()
  Dim i As Long, j As Long, k As Long
  Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
  Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

  dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
  If dong_cuoi_1 = 2 Then
    arr1 = Sheet1.Range("A2:B2").Value
  Else
    arr1 = Sheet1.Range("A2:A" & dong_cuoi_1).Value
  End If

  dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
  If dong_cuoi_2 = 2 Then
    arr2 = Sheet1.Range("B2:C2").Value
  Else
    arr2 = Sheet1.Range("B2:B" & dong_cuoi_2).Value
  End If

  ReDim arr3(1 To UBound(arr1) * UBound(arr2), 1 To 1)
  For i = 1 To UBound(arr1)
    For j = 1 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
  Next i

  Sheet1.Range("C2:C" & UBound(arr3)).Value = arr3
End Sub

Sub hoan_vi_1A_2B_3C()
  Dim i As Long, j As Long, k As Long
  Dim arr1() As Variant, arr2() As Variant, arr3() As Variant
  Dim dong_cuoi_1 As Long, dong_cuoi_2 As Long

  dong_cuoi_1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
  arr1 = Sheet1.Range("A2:B" & dong_cuoi_1).Value

  dong_cuoi_2 = Sheet1.Range("B" & Rows.Count).End(xlUp).Row
  arr2 = Sheet1.Range("B2:C" & dong_cuoi_2).Value

  ReDim arr3(1 To UBound(arr1) * UBound(arr2), 1 To 1)
  For i = 1 To UBound(arr1)
    For j = 1 To UBound(arr2)
        k = k + 1
        arr3(k, 1) = arr1(i, 1) & arr2(j, 1)
    Next j
  Next i

  Sheet1.Range("C2:C" & UBound(arr3)).Value = arr3
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom