Nhờ anh chị giúp nối các dòng chuỗi trong excel thành 1 dòng bằng VBA hoặc công thức

Liên hệ QC

phanmauthanh050

Thành viên mới
Tham gia
14/12/07
Bài viết
9
Được thích
2
Mình đang vướng phải gôm các dòng theo điều kiện lặp đi lặp lại thành 1 dòng của mỗi điều kiện với nhau.
Nhờ anh chị xem giúp mình công thức VBA/ excel có thểm gôm như ví dụ và dữ liệu theo file đính kèm.
Thank anh chị nhiều!
 

File đính kèm

  • Noi dong thanh 1 dong.xlsx
    12.6 KB · Đọc: 19
Mình đang vướng phải gôm các dòng theo điều kiện lặp đi lặp lại thành 1 dòng của mỗi điều kiện với nhau.
Nhờ anh chị xem giúp mình công thức VBA/ excel có thểm gôm như ví dụ và dữ liệu theo file đính kèm.
Thank anh chị nhiều!
Tôi có một số thắc mắc:

1) Nối 4 hàng với nhau tạo thành một hàng?

2) Mỗi lần nối với nhau, điểm nối phải thêm dấu và (&) tại đó?

3) Dấu & này cách khoảng với dòng trước và sát với dòng sau? (051241B &0501)
 
Em rất cảm ơn anh, xin trả lời sau:
1) Nối 4 hàng với nhau tạo thành một hàng?---> Dạ đúng rồi, có thể 3 hàng, hoặc 5 hàng --> Thành 1 hàng

2) Mỗi lần nối với nhau, điểm nối phải thêm dấu và (&) tại đó?--> Có thể & hoặc khoảng cách sapce cũng được ạ.

3) Dấu & này cách khoảng với dòng trước và sát với dòng sau? (051241B &0501) --> Đúng rồi anh

Rất mong anh hỗ trợ .
Cảm ơn anh
 
Em rất cảm ơn anh, xin trả lời sau:
1) Nối 4 hàng với nhau tạo thành một hàng?---> Dạ đúng rồi, có thể 3 hàng, hoặc 5 hàng --> Thành 1 hàng

2) Mỗi lần nối với nhau, điểm nối phải thêm dấu và (&) tại đó?--> Có thể & hoặc khoảng cách sapce cũng được ạ.

3) Dấu & này cách khoảng với dòng trước và sát với dòng sau? (051241B &0501) --> Đúng rồi anh

Rất mong anh hỗ trợ .
Cảm ơn anh
Nếu dùng công thức thì các hàng nối với nhau do mình chọn. Còn dùng thủ tục thì mới xét đến các điều kiện như bạn mô tả:

1630743046642.png

Nhưng ngoài các điều kiện này thì nối ngẫu nhiên hay sao?
 
Nếu dùng công thức thì các hàng nối với nhau do mình chọn. Còn dùng thủ tục thì mới xét đến các điều kiện như bạn mô tả:

View attachment 265438

Nhưng ngoài các điều kiện này thì nối ngẫu nhiên hay sao?
Ngoài các điều kiện đó mình không nối anh, nếu nối thêm ở điều kiện bằng 4 ký tự đầu sẽ thêm thì mới nối các dữ liệu bên dưới,...nên mong dùng hàm VBA hoặc công thức mảng chạy nối theo đk đó anh.
Cảm ơn anh.
 
Ngoài các điều kiện đó mình không nối anh, nếu nối thêm ở điều kiện bằng 4 ký tự đầu sẽ thêm thì mới nối các dữ liệu bên dưới,...nên mong dùng hàm VBA hoặc công thức mảng chạy nối theo đk đó anh.
Cảm ơn anh.
Bạn ơi, biết thế nào là giới hạn của nó để chuyển sang dòng mới? 4 điều kiện kia sắp xếp ngẫu nhiên hay từ nhỏ đến lớn hay như thế nào?
 
Bạn ơi, biết thế nào là giới hạn của nó để chuyển sang dòng mới? 4 điều kiện kia sắp xếp ngẫu nhiên hay từ nhỏ đến lớn hay như thế nào?
Hihi, bài này chú Nghĩa Đep Trai muốn....."đai".
Chắc là "dzi":
1) Lấy 4 ký tự đầu tiên: thí dụ 0500 == tiếp==> 0501 ==> 0505==> 0507 nối 4 hàng này
2) Hết thằng 0500 tới 0620 ==> 0621 ==> 0623 ==> 0625 nối 4 thằng này
3) Tới 0700 ==> 0701 ==>0704 ==> 0705 ==> 0707 nối ...5 thằng này
4) Tới 4600, 4601 thì mình cũng....."tèo" luôn
Híc
 
Bạn ơi, biết thế nào là giới hạn của nó để chuyển sang dòng mới? 4 điều kiện kia sắp xếp ngẫu nhiên hay từ nhỏ đến lớn hay như thế nào?
Dạ anh, điều kiện lặp đi lại của 4 số điều kiện tiếp theo:
Ví dụ:
Bắt đầu 4 số : 0500 thì nối các dòng bên dưới cho đến khi lặp lại điều kiện lại 0500, hoặc 0620 sẽ dừng lại, và vòng lặp tiếp theo 0602 nối tiếp các dòng dưới lại 1 dòng,... dừng lại gặp dòng điều kiện tiếp theo 0700 và dòng 0700 sẽ nối các dòng bên dưới vào dòng 0700 cho đến khi gặp điều kiện mới lại là 0700 hoặc 0500 hoặc 0620,... còn nếu ko gặp điều kiện tiếp theo thì mặc nhiên nối hết các dòng bên dưới lại với nhau bằng đầu dòng các điều kiện.
Bài đã được tự động gộp:

Hihi, bài này chú Nghĩa Đep Trai muốn....."đai".
Chắc là "dzi":
1) Lấy 4 ký tự đầu tiên: thí dụ 0500 == tiếp==> 0501 ==> 0505==> 0507 nối 4 hàng này
2) Hết thằng 0500 tới 0620 ==> 0621 ==> 0623 ==> 0625 nối 4 thằng này
3) Tới 0700 ==> 0701 ==>0704 ==> 0705 ==> 0707 nối ...5 thằng này
4) Tới 4600, 4601 thì mình cũng....."tèo" luôn
Híc
Hihi, bài này chú Nghĩa Đep Trai muốn....."đai".--> Anh mà Die nên em cần trợ giúp từ anh đó hii
Chắc là "dzi":
1) Lấy 4 ký tự đầu tiên: thí dụ 0500 == tiếp==> 0501 ==> 0505==> 0507 nối 4 hàng này --> Ok anh
2) Hết thằng 0500 tới 0620 ==> 0621 ==> 0623 ==> 0625 nối 4 thằng này--> Ok anh
3) Tới 0700 ==> 0701 ==>0704 ==> 0705 ==> 0707 nối ...5 thằng này ---> Ok anh
4) Tới 4600, 4601 thì mình cũng....."tèo" luôn ---> Nối hết vô 0700 cho đến khi gặp 1 điều kiện mới 0500 hoặc dòng Null.
 
Hihi, bài này chú Nghĩa Đep Trai muốn....."đai".
Chắc là "dzi":
1) Lấy 4 ký tự đầu tiên: thí dụ 0500 == tiếp==> 0501 ==> 0505==> 0507 nối 4 hàng này
2) Hết thằng 0500 tới 0620 ==> 0621 ==> 0623 ==> 0625 nối 4 thằng này
3) Tới 0700 ==> 0701 ==>0704 ==> 0705 ==> 0707 nối ...5 thằng này
4) Tới 4600, 4601 thì mình cũng....."tèo" luôn
Híc
Nối thì không khó nhưng nó sắp xếp không theo trật tự thì "die"thiệt đó nha.
 
Bạn ơi, biết thế nào là giới hạn của nó để chuyển sang dòng mới? 4 điều kiện kia sắp xếp ngẫu nhiên hay từ nhỏ đến lớn hay như thế nào?
Dạ anh, giới hạn nó chuyển sang dòng mới là điều kiện tiếp theo hoặc cho đến dòng cuối cùng null, còn không là nối theo các điều kiện đó anh! Và dòng điều kiện có thể hết 0500 tới 0700 nhưng sẽ gặp lại tiếp 0500 đi theo các dòng bên dưới tiếp theo và sẽ nối lại như vậy đó anh. Giúp em đa tạ anh nhiều hii
 
Em cứ làm bừa đi, chưa đúng bạn í sửa vài lần là đúng thôi, ở không làm gì
Thôi để bác "con cò già" làm đi, nếu làm đúng thì "còn có giá" nếu không thì "con cò giả" nghe chưa! Ẹc ... ẹc ....
P/s: Chiều nay bận rồi, nếu mai chưa ai thử thì mình sẽ thử cho.
 
Cảm ơn các anh, em gửi lại thêm dữ liệu cho rõ, chỗ Ví d vòng lập, điều kiện (0500, 0600, 0700,0620,....), nhờ các anh xem hỗ trợ giúp em, khi nào các anh rảnh hỗ trợ xem ạ.
 

File đính kèm

  • Noi dong thanh 1 dong.xlsx
    13.1 KB · Đọc: 13
Thôi để bác "con cò già" làm đi, nếu làm đúng thì "còn có giá" nếu không thì "con cò giả" nghe chưa! Ẹc ... ẹc ....
P/s: Chiều nay bận rồi, nếu mai chưa ai thử thì mình sẽ thử cho.
Hihi, chú chơi ác quá, tui nói bài này tui cũng...."tèo" mà
Coi vậy chứ khó.
1) Phải có bảng điều kiện ghép
2) Phải có quy luật ghép
Thí dụ: file ở bài #15
- Hàng 2, 3, 4, 5 đúng quy luật 0500, 0501, 0505, 0507 ( 4 ký tự đầu) ==> ghép
Tương tự hàng 6, 7, 8, 9 và 10, 11, 12, 13 đúng quy luật ==> ghép
Nhưng tới hàng 14 (0500) hàng 15 (0501) hàng 16 (0500) thì ghép ra sao hay hàng 14, 15 không ghép
Nói chung, còn rối lắm.
Híc
 
Hihi, chú chơi ác quá, tui nói bài này tui cũng...."tèo" mà
Coi vậy chứ khó.
1) Phải có bảng điều kiện ghép
2) Phải có quy luật ghép
Thí dụ: file ở bài #15
- Hàng 2, 3, 4, 5 đúng quy luật 0500, 0501, 0505, 0507 ( 4 ký tự đầu) ==> ghép
Tương tự hàng 6, 7, 8, 9 và 10, 11, 12, 13 đúng quy luật ==> ghép
Nhưng tới hàng 14 (0500) hàng 15 (0501) hàng 16 (0500) thì ghép ra sao hay hàng 14, 15 không ghép
Nói chung, còn rối lắm.
Híc
Thôi bác cò cứ làm đi, tèo tới đâu tác giả sửa tới đó! lkakakakk! Cố lên bác cò ơi.
 
Cảm ơn các anh, em gửi lại thêm dữ liệu cho rõ, chỗ Ví d vòng lập, điều kiện (0500, 0600, 0700,0620,....), nhờ các anh xem hỗ trợ giúp em, khi nào các anh rảnh hỗ trợ xem ạ.
Chạy code dưới đây.
Kết quả điền tạm vào sheet1 dòng 132 để đối chiếu
Mã:
Option Explicit

Sub noiMetNghi()
Dim Nguon
Dim Kq
Dim i, j, k
Nguon = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Kq(1 To UBound(Nguon), 1 To 1)
With CreateObject("Scripting.Dictionary")
    .Add "0500", ""
    .Add "0620", ""
    .Add "0700", ""
    .Add "4610", ""
    k = 0
    For i = 1 To UBound(Nguon)
        j = Left(Nguon(i, 1), 4)
        If .exists(j) Then
            k = k + 1
            Kq(k, 1) = Nguon(i, 1)
        Else
            Kq(k, 1) = Kq(k, 1) & " &" & Nguon(i, 1)
        End If
    Next i
End With
With Sheet1.Range("A132").Resize(k, 1)
    .Clear
    .Value = Kq
    .Interior.ThemeColor = xlThemeColorAccent6
End With
End Sub
 

File đính kèm

  • Noi dong thanh 1 dong (1).xlsb
    21.2 KB · Đọc: 10
Chạy code dưới đây.
Kết quả điền tạm vào sheet1 dòng 132 để đối chiếu
Mã:
Option Explicit

Sub noiMetNghi()
Dim Nguon
Dim Kq
Dim i, j, k
Nguon = Sheet1.Range("A2", Sheet1.Range("A2").End(xlDown))
ReDim Kq(1 To UBound(Nguon), 1 To 1)
With CreateObject("Scripting.Dictionary")
    .Add "0500", ""
    .Add "0620", ""
    .Add "0700", ""
    .Add "4610", ""
    k = 0
    For i = 1 To UBound(Nguon)
        j = Left(Nguon(i, 1), 4)
        If .exists(j) Then
            k = k + 1
            Kq(k, 1) = Nguon(i, 1)
        Else
            Kq(k, 1) = Kq(k, 1) & " &" & Nguon(i, 1)
        End If
    Next i
End With
With Sheet1.Range("A132").Resize(k, 1)
    .Clear
    .Value = Kq
    .Interior.ThemeColor = xlThemeColorAccent6
End With
End Sub
Cảm ơn anh CHAOQUAY nhiều, em thấy chạy kết quả quá ok, để em chạy xem chạy với dữ liệu nhiều, không hiểu nào em phiền anh thêm nhé!
 
Anh CHAOQUAY ơi, tại lệnh này

With Sheet1.Range("A132").Resize(k, 1)
.Clear

Chỗ nó không xóa h dữ liệu trước đó. Anh có thể bổ dung em câu lệnh chỗ nãy, mỗi lần nối xóa dữ liệu cũ, rồi dán lại dữ liệu mới được không anh? cảm ơn anh!
 
Web KT
Back
Top Bottom