ngocthach90
Thành viên mới
- Tham gia
- 12/1/16
- Bài viết
- 23
- Được thích
- 1
Hình như cái này dùng offset được đấy. Ngủ đã.Có đoạn code nào để cứ mỗi 20 ô dữ liệu sẽ được nối lại với nhau bằng dấu phẩy không?
Các anh chị chỉ giúp em ạ. Em cảm ơn!
Thử code này coi đúng ý không?Có đoạn code nào để cứ mỗi 20 ô dữ liệu sẽ được nối lại với nhau bằng dấu phẩy không?
Các anh chị chỉ giúp em ạ. Em cảm ơn!
Sub ABC()
Dim i&, iR&, Res(), k&
With Sheets("Sheet1")
iR = .Range("A" & Rows.Count).End(3).Row
ReDim Res(1 To Int((iR - 1) / 20) + 1, 1 To 1)
For i = 2 To iR Step 20
k = k + 1
Res(k, 1) = WorksheetFunction.TextJoin(",", True, .Cells(i, 1).Resize(20))
Next
.Range("G4").Resize(k, 1).Value = Res
End With
End Sub
của bạn đây, dùng office 365, 2019 trở lên nhé.Có đoạn code nào để cứ mỗi 20 ô dữ liệu sẽ được nối lại với nhau bằng dấu phẩy không?
Các anh chị chỉ giúp em ạ. Em cảm ơn!
Bạn dùng 365 thì thế này nhé TEXTJOIN(",",1,OFFSET($A$1,1+(20*ROW(A1)-20),0,20,1))Có đoạn code nào để cứ mỗi 20 ô dữ liệu sẽ được nối lại với nhau bằng dấu phẩy không?
Các anh chị chỉ giúp em ạ. Em cảm ơn!
Có đoạn code nào để cứ mỗi 20 ô dữ liệu sẽ được nối lại với nhau bằng dấu phẩy không?
Các anh chị chỉ giúp em ạ. Em cảm ơn!
Bạn cho mình xin công thức với office 2016 nhé, xin cảm ơn bạn.Bạn dùng 365 thì thế này nhé TEXTJOIN(",",1,OFFSET($A$1,1+(20*ROW(A1)-20),0,20,1))
2016 thì em chịu bác ơiBạn cho mình xin công thức với office 2016 nhé, xin cảm ơn bạn.
Mình chưa xem file nhưng sao đã code lại còn dùng textjoin thế bạn? Nó lại phải phụ thuộc vào office rồiThử code này coi đúng ý không?
Mã:Sub ABC() Dim i&, iR&, Res(), k& With Sheets("Sheet1") iR = .Range("A" & Rows.Count).End(3).Row ReDim Res(1 To Int((iR - 1) / 20) + 1, 1 To 1) For i = 2 To iR Step 20 k = k + 1 Res(k, 1) = WorksheetFunction.TextJoin(",", True, .Cells(i, 1).Resize(20)) Next .Range("G4").Resize(k, 1).Value = Res End With End Sub
Hình như có đó bạn.Bạn cho mình xin công thức với office 2016 nhé, xin cảm ơn bạn.
Trong máy mình không thấy có nên mới nhờ bạn.Hình như có đó bạn.
Excel 2016
Trong máy mình không thấy có nên mới nhờ bạn.
2016 thì em không có office đó, nên viết thử bác dùng xem có được không?Bạn cho mình xin công thức với office 2016 nhé, xin cảm ơn bạn.
=MID(CONCAT(","&OFFSET(A2,(ROWS($A$2:A2)-1)*20,,20)),2,1000)
=MID(CONCAT(","&OFFSET(A2,(ROWS($A$2:A2)-1)*20,,20)),2,1000)
Thực ra cái ý đồ của mình lúc đầu không sai, mà quên không cố định ô A6*19 thôi nha
Đúng rồi, cái này bác mà mình giúp dư sức xử.với cách này khi hết list nó cứ hiện dấu , rất nhiều
=SUBSTITUTE(TRIM(CONCAT(" "&OFFSET($A$6,(ROWS($A$6:A6)-1)*20,,20)))," ",",")
Quên anh ạ. hihi........... .....Mình chưa xem file nhưng sao đã code lại còn dùng textjoin thế bạn? Nó lại phải phụ thuộc vào office rồi
VBA có hàm join mà
G4=CONCAT(OFFSET($A$1;20*(ROW()-3);0;-20;1)&", ")
G4=TEXTJOIN(", ";TRUE;OFFSET($A$1;20*(ROW()-3);0;-20;1))
Code chạy tốt từ 2016 trở lên mà em đang dùng Excel 2010 nên code này ko xài được. Có cách nào khác không ạ?Thử code này coi đúng ý không?
Mã:Sub ABC() Dim i&, iR&, Res(), k& With Sheets("Sheet1") iR = .Range("A" & Rows.Count).End(3).Row ReDim Res(1 To Int((iR - 1) / 20) + 1, 1 To 1) For i = 2 To iR Step 20 k = k + 1 Res(k, 1) = WorksheetFunction.TextJoin(",", True, .Cells(i, 1).Resize(20)) Next .Range("G4").Resize(k, 1).Value = Res End With End Sub
Dùng hàm thôi. Còn dữ liệu nhiều thì nghiên cứu hàm join của vba vậy.Code chạy tốt từ 2016 trở lên mà em đang dùng Excel 2010 nên code này ko xài được. Có cách nào khác không ạ?
Thu thêm cách này coi saoCode chạy tốt từ 2016 trở lên mà em đang dùng Excel 2010 nên code này ko xài được. Có cách nào khác không ạ?
Sub ABC()
Dim i&, iR&, Res(), k&, sArr(), Tmp, ii&
With Sheets("Sheet1")
iR = .Range("A" & Rows.Count).End(3).Row
sArr = .Range("A2:A" & iR).Value
ReDim Res(1 To Int(UBound(sArr) / 20) + 1, 1 To 1)
For i = 1 To UBound(sArr) Step 20
k = k + 1
For ii = i To i + 19
If ii < UBound(sArr) Then
If Len(Tmp) Then Tmp = Tmp & "," & sArr(ii, 1) Else Tmp = sArr(ii, 1)
End If
Next
Res(k, 1) = Tmp: Tmp = Empty
Next
.Range("G4").Resize(k, 1).Value = Res
End With
End Sub
Em test thử thì <100 thì được nhưng trên 100 hoặc 1 dãy mã số khách hàng khác thì có dòng bị lỗiThu thêm cách này coi sao
Mã:Sub ABC() Dim i&, iR&, Res(), k&, sArr(), Tmp, ii& With Sheets("Sheet1") iR = .Range("A" & Rows.Count).End(3).Row sArr = .Range("A2:A" & iR).Value ReDim Res(1 To Int(UBound(sArr) / 20) + 1, 1 To 1) For i = 1 To UBound(sArr) Step 20 k = k + 1 For ii = i To i + 19 If ii < UBound(sArr) Then If Len(Tmp) Then Tmp = Tmp & "," & sArr(ii, 1) Else Tmp = sArr(ii, 1) End If Next Res(k, 1) = Tmp: Tmp = Empty Next .Range("G4").Resize(k, 1).Value = Res End With End Sub