pqkythuat1
Thành viên mới
- Tham gia
- 14/1/23
- Bài viết
- 35
- Được thích
- 2
Chạy sub . . . .Chào các bạn,
Rất mong các bạn giúp mình cách để chia nhỏ dữ liệu của 1 ô thành nhiều dòng như trong hình. Cám ơn các bạn rất nhiều.
View attachment 285776
Sub ABC()
Dim arr(), S, res(), ch10$
Dim sRow&, sCol&, i&, j&, r&, k&, eR&, maxR&
Const srRes& = 9999 'gioi han so dong ket qua: 9999
ch10 = Chr(10)
ReDim res(1 To srRes, 1 To 5)
With Sheets("DATA")
arr = .Range("A1", .Range("E" & Rows.Count).End(xlUp)).Value
End With
sRow = UBound(arr): sCol = UBound(arr, 2)
On Error Resume Next
For i = 1 To sRow
maxR = 0
For j = 1 To sCol
k = eR
S = Split(ch10 & arr(i, j), ch10)
For r = 1 To UBound(S)
k = k + 1
res(k, j) = S(r)
Next r
If maxR < k Then maxR = k
Next j
eR = maxR
Next i
If Err.Number > 0 Then
MsgBox ("So dong ket qua khai bao thieu !" & ch10 & "Khai bao lai: Const srRes& = ??????")
Exit Sub
End If
With Sheets("KETQUA")
If .Range("A1").Value <> Empty Then .Range("A1").CurrentRegion.ClearContents
.Range("A1").Resize(eR, 5) = res
End With
End Sub
Góp ý suông rất hiếm khi thành công.
Nhân xem code anh Hiếu trường hợp của bạn này hỏi. Thế em cũng hay phải làm ngược lại là gom vào một ô như File này thì code sao ạ. Mong anh Hiếu giúp ạ.Chạy sub . . . .
Mã:Sub ABC() Dim arr(), S, res(), ch10$ Dim sRow&, sCol&, i&, j&, r&, k&, eR&, maxR& Const srRes& = 9999 'gioi han so dong ket qua: 9999 ch10 = Chr(10) ReDim res(1 To srRes, 1 To 5) With Sheets("DATA") arr = .Range("A1", .Range("E" & Rows.Count).End(xlUp)).Value End With sRow = UBound(arr): sCol = UBound(arr, 2) On Error Resume Next For i = 1 To sRow maxR = 0 For j = 1 To sCol k = eR S = Split(ch10 & arr(i, j), ch10) For r = 1 To UBound(S) k = k + 1 res(k, j) = S(r) Next r If maxR < k Then maxR = k Next j eR = maxR Next i If Err.Number > 0 Then MsgBox ("So dong ket qua khai bao thieu !" & ch10 & "Khai bao lai: Const srRes& = ??????") Exit Sub End If With Sheets("KETQUA") If .Range("A1").Value <> Empty Then .Range("A1").CurrentRegion.ClearContents .Range("A1").Resize(eR, 5) = res End With End Sub
Bạn thử chạy code cùi này rồi kiểm tra kết quả xem được không nha!Nhân xem code anh Hiếu trường hợp của bạn này hỏi. Thế em cũng hay phải làm ngược lại là gom vào một ô như File này thì code sao ạ. Mong anh Hiếu giúp ạ.
Option Explicit
Sub GPE()
Dim Arr(), Res(), i&, Lr&
Dim Dic As Object, a&
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("Sheet1")
Lr = .Range("A" & Rows.Count).End(xlUp).Row
Arr = .Range("A2:B" & Lr).Value
ReDim Res(1 To UBound(Arr), 1 To 2)
For i = 1 To UBound(Arr)
If Not Dic.exists(Arr(i, 1)) Then
a = a + 1
Dic.Add (Arr(i, 1)), a
Res(a, 1) = Arr(i, 1)
Res(a, 2) = Arr(i, 2)
Else
Res(Dic.Item(Arr(i, 1)), 2) = Res(Dic.Item(Arr(i, 1)), 2) & Chr(10) & Arr(i, 2)
End If
Next i
If a Then
.Range("G2:H100000").ClearContents
.Range("G2").Resize(a, 2).Value = Res
End If
End With
Set Dic = Nothing
End Sub
Cột A đã sort ?Nhân xem code anh Hiếu trường hợp của bạn này hỏi. Thế em cũng hay phải làm ngược lại là gom vào một ô như File này thì code sao ạ. Mong anh Hiếu giúp ạ.