về việc ghép chuỗi ký tự kèm thêm điều kiện

Liên hệ QC

gnnvietnam

Thành viên mới
Tham gia
31/1/12
Bài viết
9
Được thích
0
Xin chỉ giúp mình về việc nối dữ liệu

Như file mình có đính kèm theo, mình muốn nối dữ liệu như sau :
Bắt đầu chuỗi bằng chuỗi : MM/G A sau đó thêm chuỗi cột E -> U (trong đó N,P,Q,S,T,U luôn là 0). Giữa chuỗi MM/G A sẽ có 1 khoảng trắng rồi đến cột E. Và điều làm khó là mình muốn là chuỗi đầu lấy dòng E6 F17 thì chuỗi kế sẽ là E6 F18 v.v... Các bạn có thể hướng dẫn giúp mình được không ? Số lượng file như thế này là khoảng 35 file, mỗi file có sự thay đổi giữa các dòng và cột nên nếu được mong các bạn giải thích rõ để mình có sự thay đổi cho hợp lý ở từng file.
Xin cảm ơn rất nhiều.
 

File đính kèm

  • AquaMaster Order Information.xlsx
    18.7 KB · Đọc: 16
Như file mình có đính kèm theo, mình muốn nối dữ liệu như sau :
Bắt đầu chuỗi bằng chuỗi : MM/G A sau đó thêm chuỗi cột E -> U (trong đó N,P,Q,S,T,U luôn là 0). Giữa chuỗi MM/G A sẽ có 1 khoảng trắng rồi đến cột E. Và điều làm khó là mình muốn là chuỗi đầu lấy dòng E6 F17 thì chuỗi kế sẽ là E6 F18 v.v... Các bạn có thể hướng dẫn giúp mình được không ? Số lượng file như thế này là khoảng 35 file, mỗi file có sự thay đổi giữa các dòng và cột nên nếu được mong các bạn giải thích rõ để mình có sự thay đổi cho hợp lý ở từng file.
Xin cảm ơn rất nhiều.

Nghe tô tả + xem file = đếch hiểu cóc khô gì
Kết quả bạn cần là bao nhiêu? Điền vào cell nào?
 
Nghe tô tả + xem file = đếch hiểu cóc khô gì
Kết quả bạn cần là bao nhiêu? Điền vào cell nào?

Mình cần điền kết quả vào cột V. Kết quả như thế này
V1 = D4 & E6 & F17 & G35 & H43 & I2 & J50
V2 = D4 & E6 & F17 & G35 & H43 & I2 & J51
-> Vx = D4 & E6 & F17 & G35 & H43 & I2 & J63
V = D4 & E6 & F17 & G35 & H43 & I3 & J50
V = D4 & E6 & F17 & G35 & H43 & I3 & J51
Tóm lại là thay đổi lần lượt các cột E, F, G, H, I, J sao cho không trùng nhau và các ô đó là những ô có giá trị bên trong không phải ô rỗng.
 
Mình cần điền kết quả vào cột V. Kết quả như thế này
V1 = D4 & E6 & F17 & G35 & H43 & I2 & J50
V2 = D4 & E6 & F17 & G35 & H43 & I2 & J51
-> Vx = D4 & E6 & F17 & G35 & H43 & I2 & J63
V = D4 & E6 & F17 & G35 & H43 & I3 & J50
V = D4 & E6 & F17 & G35 & H43 & I3 & J51
Tóm lại là thay đổi lần lượt các cột E, F, G, H, I, J sao cho không trùng nhau và các ô đó là những ô có giá trị bên trong không phải ô rỗng.
Như bạn nói thì kết quả sẽ có 57.120 dòng?
 
Đúng rồi, tùy từng file mà số lượng cột có khác nhau, nhưng cách ghép dữ liệu vẫn như thế cả.
 
Đúng rồi, tùy từng file mà số lượng cột có khác nhau, nhưng cách ghép dữ liệu vẫn như thế cả.
Nếu vậy thì chạy code này đi, sẽ có 57.120 dòng.
PHP:
Public Sub GPE()
Dim Rng(), Arr(1 To 65000, 1 To 1), E As Long, F As Long, G As Long, H As Long, I As Long, J As Long, K As Long, Tem As String, N As Long
Rng = Sheet1.[E6:J63].Value
Tem = Sheet1.[D4].Value & " "
N = UBound(Rng, 1)
For E = 1 To N
    If Rng(E, 1) <> "" Then
    For F = 1 To N
        If Rng(F, 2) <> "" Then
        For G = 1 To N
            If Rng(G, 3) <> "" Then
            For H = 1 To N
                If Rng(H, 4) <> "" Then
                For I = 1 To N
                    If Rng(I, 5) <> "" Then
                    For J = 1 To N
                        If Rng(J, 6) <> "" Then
                            K = K + 1
                            Arr(K, 1) = Tem & Rng(E, 1) & Rng(F, 2) & Rng(G, 3) & Rng(H, 4) & Rng(I, 5) & Rng(J, 6)
                        End If
                    Next J
                    End If
                Next I
                End If
            Next H
            End If
        Next G
        End If
    Next F
    End If
Next E
Sheet1.[V1].Resize(K).Value = Arr
End Sub
 
Nếu vậy thì chạy code này đi, sẽ có 57.120 dòng.

Cám ơn bác, mình thử rồi đã chạy tốt. Mình thử thay đổi 1 chút như sau :
PHP:
Public Sub GPE()
Dim Rng(), Arr(1 To 65000, 1 To 1), E As Long, F As Long, G As Long, H  As Long, I As Long, J As Long, K As Long, Tem As String, Tem2 As String, N As Long
Rng = Sheet1.[E6:J63].Value
Tem = Sheet1.[D4].Value & " "
Tem2 = " " & Sheet1.[K4].Value
N = UBound(Rng, 1)
For E = 1 To N
    If Rng(E, 1) <> "" Then
    For F = 1 To N
        If Rng(F, 2) <> "" Then
        For G = 1 To N
            If Rng(G, 3) <> "" Then
            For H = 1 To N
                If Rng(H, 4) <> "" Then
                For I = 1 To N
                    If Rng(I, 5) <> "" Then
                    For J = 1 To N
                        If Rng(J, 6) <> "" Then
                            K = K + 1
                            Arr(K, 1) = Tem & Rng(E, 1) & Rng(F,  2) & Rng(G, 3) & Rng(H, 4) & Rng(I, 5) & Rng(J, 6) & Tem2
                        End If
                    Next J
                    End If
                Next I
                End If
            Next H
            End If
        Next G
        End If
    Next F
    End If
Next E
Sheet1.[V1].Resize(K).Value = Arr
End Sub
Nhầm mục đích thêm chuỗi ở ô K4 vào. Chạy vẫn tốt nhưng không biết liệu sẽ có lỗi gì không. Bác kiểm tra giúp mình nhé. Cám ơn bác nhiều.
 
Tuần trước mình đã được các bạn giúp về việc ghép chuỗi ở đây : http://www.giaiphapexcel.com/forum/showthread.php?73629-Xin-chỉ-giúp-mình-về-việc-nối-dữ-liệu
Mình đính kèm theo file để tiện xin giúp đỡ. Yêu cầu ghép chuỗi từ A2 : I43. Ở E30 có note 1, nghĩa là với E30 thì không thể ghép với Cột D có giá trị : 1,2,K,L,M,N,P,R,S,T. Nghĩa là chuỗi LP-xxx11xxxx hoặc LP-xxx21xxxx không thể xuất hiện. Khó là do có đến 4 note nên không biết phải dùng If như thế nào trong VBA để loại những chuỗi đó. Còn nếu làm tay thì rất lâu. Mong được sự hướng dẫn và giải thích để mình hiểu rõ. Cám ơn mọi người.
 

File đính kèm

  • Pneumatic Actuator LP Type.xlsx
    10.5 KB · Đọc: 8
Thì vấn đề đó xong rồi, giờ là thêm điều kiện ghép nữa nên mình nghĩ tạo thêm 1 topic mới. 3 ngày nay nghĩ đủ kiểu nhưng không xử lý được hix
 
Web KT
Back
Top Bottom