Hình như cái này phải dụng tới VBA đúng không @n0thing1988 ? Hay kutool kutool gì có xử lý cái này được đúng không? Chứ xài công thức sao biết đường???!!!Thân gửi: Anh/chị/em trên GPE
Hiện tại, mình đang có 1 file dữ liệu mà trong 1 ô có rất nhiều dòng nhưng nếu làm thao tác thủ công rất tốn thời gian nên có nhờ mọi người có thể giúp em giải quyết vấn đề vấn với ạ.
View attachment 245198
Rất mong được sự giúp đỡ.
Trân trọng.
Thân gửi: Anh/chị/em trên GPE
Hiện tại, mình đang có 1 file dữ liệu mà trong 1 ô có rất nhiều dòng nhưng nếu làm thao tác thủ công rất tốn thời gian nên có nhờ mọi người có thể giúp em giải quyết vấn đề vấn với ạ.
View attachment 245198
Rất mong được sự giúp đỡ.
Trân trọng.
A4=A3+IFERROR(COUNTIF(A$3:A3,A3)=ROUNDUP(LEN(SUBSTITUTE(VLOOKUP(A3,TongHop!$A$4:$F$8,4,),CHAR(10),REPT(1,999)))/999,),1)
B4:C4=VLOOKUP($A4,TongHop!$A$4:$F$8,COLUMN(),)
D4:F4=TRIM(MID(SUBSTITUTE(REPT(VLOOKUP($A4,TongHop!$A$4:$F$8,COLUMN(),)&CHAR(10),10),CHAR(10),REPT(" ",999)),COUNTIF($A$3:$A3,$A4)*999+1,999))
Em thấy cái này dùng code VBA chạy cũng tiện lắm anh ơi, nhờ mấy anh giúp đỡ. Em xin cảm ơn.Hình như cái này phải dụng tới VBA đúng không @n0thing1988 ? Hay kutool kutool gì có xử lý cái này được đúng không? Chứ xài công thức sao biết đường???!!!
Hay mình xử lý chuỗi cắt nó khi phát hiện ra 1 2 3 4? Có vẻ có lý ta.
Anh ơi, cái này mình có code VBA không anh.Mã:A4=A3+IFERROR(COUNTIF(A$3:A3,A3)=ROUNDUP(LEN(SUBSTITUTE(VLOOKUP(A3,TongHop!$A$4:$F$8,4,),CHAR(10),REPT(1,999)))/999,),1)
Mã:B4:C4=VLOOKUP($A4,TongHop!$A$4:$F$8,COLUMN(),)
Mã:D4:F4=TRIM(MID(SUBSTITUTE(REPT(VLOOKUP($A4,TongHop!$A$4:$F$8,COLUMN(),)&CHAR(10),10),CHAR(10),REPT(" ",999)),COUNTIF($A$3:$A3,$A4)*999+1,999))
Nếu bạn muốn code thì nói ngay từ đầu sẽ hay hơn.Anh ơi, cái này mình có code VBA không anh.
Function SplitRow(ByVal aArr As Variant, ByVal lMainCol As Long, sDelemiter As String) As Variant
Dim i As Long, j As Long, ii As Long, k As Long, aResult As Variant, lCount As Long
aArr = aArr
For i = LBound(aArr, 1) To UBound(aArr, 1)
aArr(i, lMainCol) = Split(aArr(i, lMainCol), sDelemiter)
k = UBound(aArr(i, lMainCol), 1) - LBound(aArr(i, lMainCol), 1) + 1
lCount = lCount + k
For j = LBound(aArr, 2) To UBound(aArr, 2)
If j <> lMainCol Then
aArr(i, j) = Split(Replace(Space(k), " ", aArr(i, j) & sDelemiter), sDelemiter, k + 1)
End If
Next
Next
ReDim aResult(1 To lCount, LBound(aArr, 2) To UBound(aArr, 2))
k = 0
For i = LBound(aArr, 1) To UBound(aArr, 1)
For ii = LBound(aArr(i, lMainCol), 1) To UBound(aArr(i, lMainCol), 1)
k = k + 1
For j = LBound(aArr, 2) To UBound(aArr, 2)
aResult(k, j) = aArr(i, j)(ii)
Next
Next
Next
SplitRow = aResult
End Function
Sub Test()
Arr = SplitRow(Sheet1.[A4:F8].Value, 4, ChrW(10))
Sheet2.[A4].Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr
End Sub
Dạ, em cảm ơn anh nhiều nha. Dữ liệu chạy rất mượt anh ơi.Nếu bạn muốn code thì nói ngay từ đầu sẽ hay hơn.
Mã:Function SplitRow(ByVal aArr As Variant, ByVal lMainCol As Long, sDelemiter As String) As Variant Dim i As Long, j As Long, ii As Long, k As Long, aResult As Variant, lCount As Long aArr = aArr For i = LBound(aArr, 1) To UBound(aArr, 1) aArr(i, lMainCol) = Split(aArr(i, lMainCol), sDelemiter) k = UBound(aArr(i, lMainCol), 1) - LBound(aArr(i, lMainCol), 1) + 1 lCount = lCount + k For j = LBound(aArr, 2) To UBound(aArr, 2) If j <> lMainCol Then aArr(i, j) = Split(Replace(Space(k), " ", aArr(i, j) & sDelemiter), sDelemiter, k + 1) End If Next Next ReDim aResult(1 To lCount, LBound(aArr, 2) To UBound(aArr, 2)) k = 0 For i = LBound(aArr, 1) To UBound(aArr, 1) For ii = LBound(aArr(i, lMainCol), 1) To UBound(aArr(i, lMainCol), 1) k = k + 1 For j = LBound(aArr, 2) To UBound(aArr, 2) aResult(k, j) = aArr(i, j)(ii) Next Next Next SplitRow = aResult End Function Sub Test() Arr = SplitRow(Sheet1.[A4:F8].Value, 4, ChrW(10)) Sheet2.[A4].Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr End Sub
Để viết được code thế này chắc anh phải là dân lập trình chuyên nghiệp lắm anh nhỉ, thấy code của mà em mê quá vừa đẹp mắt lại rất hiệu quả. Anh có phương pháp nào để em giống như anh được không nhỉ, thời buổi này mà không biết code Excel thì khó lắm đây.Nếu bạn muốn code thì nói ngay từ đầu sẽ hay hơn.
Mã:Function SplitRow(ByVal aArr As Variant, ByVal lMainCol As Long, sDelemiter As String) As Variant Dim i As Long, j As Long, ii As Long, k As Long, aResult As Variant, lCount As Long aArr = aArr For i = LBound(aArr, 1) To UBound(aArr, 1) aArr(i, lMainCol) = Split(aArr(i, lMainCol), sDelemiter) k = UBound(aArr(i, lMainCol), 1) - LBound(aArr(i, lMainCol), 1) + 1 lCount = lCount + k For j = LBound(aArr, 2) To UBound(aArr, 2) If j <> lMainCol Then aArr(i, j) = Split(Replace(Space(k), " ", aArr(i, j) & sDelemiter), sDelemiter, k + 1) End If Next Next ReDim aResult(1 To lCount, LBound(aArr, 2) To UBound(aArr, 2)) k = 0 For i = LBound(aArr, 1) To UBound(aArr, 1) For ii = LBound(aArr(i, lMainCol), 1) To UBound(aArr(i, lMainCol), 1) k = k + 1 For j = LBound(aArr, 2) To UBound(aArr, 2) aResult(k, j) = aArr(i, j)(ii) Next Next Next SplitRow = aResult End Function Sub Test() Arr = SplitRow(Sheet1.[A4:F8].Value, 4, ChrW(10)) Sheet2.[A4].Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr End Sub
Bạn chuẩn bị 1 con gà nướng và 3 cái bánh bao nhân ngọt để làm lễ ra mắt nhé. Thầy ưng bạn thì 7 ngày sau làm tiếp cái lễ bái sư (1 con heo sữa quay và 1 mâm ngũ quả là được).Để viết được code thế này chắc anh phải là dân lập trình chuyên nghiệp lắm anh nhỉ, thấy code của mà em mê quá vừa đẹp mắt lại rất hiệu quả. Anh có phương pháp nào để em giống như anh được không nhỉ, thời buổi này mà không biết code Excel thì khó lắm đây.
Bạn chỉ giùm mình cách sử dụng cái hàm trên.Nếu bạn muốn code thì nói ngay từ đầu sẽ hay hơn.
Mã:Function SplitRow(ByVal aArr As Variant, ByVal lMainCol As Long, sDelemiter As String) As Variant Dim i As Long, j As Long, ii As Long, k As Long, aResult As Variant, lCount As Long aArr = aArr For i = LBound(aArr, 1) To UBound(aArr, 1) aArr(i, lMainCol) = Split(aArr(i, lMainCol), sDelemiter) k = UBound(aArr(i, lMainCol), 1) - LBound(aArr(i, lMainCol), 1) + 1 lCount = lCount + k For j = LBound(aArr, 2) To UBound(aArr, 2) If j <> lMainCol Then aArr(i, j) = Split(Replace(Space(k), " ", aArr(i, j) & sDelemiter), sDelemiter, k + 1) End If Next Next ReDim aResult(1 To lCount, LBound(aArr, 2) To UBound(aArr, 2)) k = 0 For i = LBound(aArr, 1) To UBound(aArr, 1) For ii = LBound(aArr(i, lMainCol), 1) To UBound(aArr(i, lMainCol), 1) k = k + 1 For j = LBound(aArr, 2) To UBound(aArr, 2) aResult(k, j) = aArr(i, j)(ii) Next Next Next SplitRow = aResult End Function Sub Test() Arr = SplitRow(Sheet1.[A4:F8].Value, 4, ChrW(10)) Sheet2.[A4].Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr End Sub
Cứ việc tới gần chỗ nhà mình. Chỉ cần một buổi uống cafe thì sẽ có thể viết code rần rần.Bạn chuẩn bị 1 con gà nướng và 3 cái bánh bao nhân ngọt để làm lễ ra mắt nhé. Thầy ưng bạn thì 7 ngày sau làm tiếp cái lễ bái sư (1 con heo sữa quay và 1 mâm ngũ quả là được).
Mình có quay video lại nhưng không upload lên được nên gửi bạn đường link: https://drive.google.com/file/d/1LwKd5I0Z2g-wmcPjG5PCPGSunC83b4XP/view?usp=sharingBạn chỉ giùm mình cách sử dụng cái hàm trên.
Đọc mục lục của anh là em biết anh lão làng rồi làm cho em cảm thấy học viết code Excel không phải là vấn đề nan giải nữa. Nhưng mà anh và em có khoảng cách về địa lý (em ở Quảng Nam) nên không sao hội ngộ để anh truyền thụ võ công được.Cứ việc tới gần chỗ nhà mình. Chỉ cần một buổi uống cafe thì sẽ có thể viết code rần rần.
- 5 phút để hiểu tại sao cần khai báo biến + cách khai báo biến kiểu giang hồ như Dim i, j, sArr ,tmp. Khỏi cần bận tâm as long, hay as object...
- 15 phút để biết cách chọn vùng mình cần xử lý. Cách xác định dòng cuối, cột cuối
- 5 phút để biết mảng 2 chiều là cái giống gì
- 5 phút để biết cách gán dữ liệu vùng cần xử lý lên mảng
-15 phút để hiểu vòng lặp For ... Next hoạt động như thế nào
-15 phút để hiểu cấu trúc If ... End If
-30 phút để hiểu cách hoạt động của Dictionary
-60 phút để viết một code cơ bản áp dụng cái mớ bên trên.
Bảo đảm sau một buổi cafe đàm đạo về code bạn sẽ có cái nhìn mới dễ việc viết code cơ bản cho công việc văn phòng...
Mình không xem được. Bạn chỉ cho mình điền mấy 3 tham số trong cái hàm đó, số liệu như trong file ví dụ là được.Mình có quay video lại nhưng không upload lên được nên gửi bạn đường link: https://drive.google.com/file/d/1LwKd5I0Z2g-wmcPjG5PCPGSunC83b4XP/view?usp=sharing
Bài đã được tự động gộp:
Đọc mục lục của anh là em biết anh lão làng rồi làm cho em cảm thấy học viết code Excel không phải là vấn đề nan giải nữa. Nhưng mà anh và em có khoảng cách về địa lý (em ở Quảng Nam) nên không sao hội ngộ để anh truyền thụ võ công được.
Và sau, 15 phút về nhà là trả lại cho thầy?Cứ việc tới gần chỗ nhà mình. Chỉ cần một buổi uống cafe thì sẽ có thể viết code rần rần.
- 5 phút để hiểu tại sao cần khai báo biến + cách khai báo biến kiểu giang hồ như Dim i, j, sArr ,tmp. Khỏi cần bận tâm as long, hay as object...
- 15 phút để biết cách chọn vùng mình cần xử lý. Cách xác định dòng cuối, cột cuối
- 5 phút để biết mảng 2 chiều là cái giống gì
- 5 phút để biết cách gán dữ liệu vùng cần xử lý lên mảng
-15 phút để hiểu vòng lặp For ... Next hoạt động như thế nào
-15 phút để hiểu cấu trúc If ... End If
-30 phút để hiểu cách hoạt động của Dictionary
-60 phút để viết một code cơ bản áp dụng cái mớ bên trên.
Bảo đảm sau một buổi cafe đàm đạo về code bạn sẽ có cái nhìn mới dễ việc viết code cơ bản cho công việc văn phòng...
Sao không thấy phút nào về cách phân tích vấn đề, lượt thuật lô gic tuần tự, xếp thành giải thuật, và từ đó dịch những chi tiết thành code.Cứ việc tới gần chỗ nhà mình. Chỉ cần một buổi uống cafe thì sẽ có thể viết code rần rần.
- 5 phút để hiểu tại sao cần khai báo biến + cách khai báo biến kiểu giang hồ như Dim i, j, sArr ,tmp. Khỏi cần bận tâm as long, hay as object...
- 15 phút để biết cách chọn vùng mình cần xử lý. Cách xác định dòng cuối, cột cuối
- 5 phút để biết mảng 2 chiều là cái giống gì
- 5 phút để biết cách gán dữ liệu vùng cần xử lý lên mảng
-15 phút để hiểu vòng lặp For ... Next hoạt động như thế nào
-15 phút để hiểu cấu trúc If ... End If
-30 phút để hiểu cách hoạt động của Dictionary
-60 phút để viết một code cơ bản áp dụng cái mớ bên trên.
Bảo đảm sau một buổi cafe đàm đạo về code bạn sẽ có cái nhìn mới dễ việc viết code cơ bản cho công việc văn phòng...
A ở chỗ nào vậy anh, để hằng sáng mời cafe anh và được họcCứ việc tới gần chỗ nhà mình. Chỉ cần một buổi uống cafe thì sẽ có thể viết code rần rần.
- 5 phút để hiểu tại sao cần khai báo biến + cách khai báo biến kiểu giang hồ như Dim i, j, sArr ,tmp. Khỏi cần bận tâm as long, hay as object...
- 15 phút để biết cách chọn vùng mình cần xử lý. Cách xác định dòng cuối, cột cuối
- 5 phút để biết mảng 2 chiều là cái giống gì
- 5 phút để biết cách gán dữ liệu vùng cần xử lý lên mảng
-15 phút để hiểu vòng lặp For ... Next hoạt động như thế nào
-15 phút để hiểu cấu trúc If ... End If
-30 phút để hiểu cách hoạt động của Dictionary
-60 phút để viết một code cơ bản áp dụng cái mớ bên trên.
Bảo đảm sau một buổi cafe đàm đạo về code bạn sẽ có cái nhìn mới dễ việc viết code cơ bản cho công việc văn phòng...
Gửi anh hướng dẫn.Mình không xem được. Bạn chỉ cho mình điền mấy 3 tham số trong cái hàm đó, số liệu như trong file ví dụ là được.
Mình có quay video lại nhưng không upload lên được nên gửi bạn đường link: https://drive.google.com/file/d/1LwKd5I0Z2g-wmcPjG5PCPGSunC83b4XP/view?usp=sharing
Bài đã được tự động gộp:
Gửi anh hướng dẫn.Mình không xem được. Bạn chỉ cho mình điền mấy 3 tham số trong cái hàm đó, số liệu như trong file ví dụ là được.
Về vấn đề này, xin các tiền bối có thể chia sẻ cho hậu bối phương pháp học và cách tư duy như thế nào để viết code có hiệu quả hơn không nhỉ. Học được cái này rất có ích để ứng dụng cho thực tế.Sao không thấy phút nào về cách phân tích vấn đề, lượt thuật lô gic tuần tự, xếp thành giải thuật, và từ đó dịch những chi tiết thành code.