Nối nhiều chuỗi trong excel

Liên hệ QC
Có ai giúp em đoạn code này thiếu hay sai ở đâu với. help với
 
Lần chỉnh sửa cuối:
Có 2 hàm : GhepTen1,GhepTen2

Hàm GhepTen1(A1,A2,B1,B2,D1,E1)
Hàm GhepTen2(A1:B2) & GhepTen2(D1:E1)
=> Có cách nào viết gọp lại thành hàm GhepTen(A1:B2,D1:E1) được không ?

Function GhepTen1(ParamArray rng() As Variant) As String
Dim i As Long
Dim iRet As Long
Dim tam As String
For i = LBound(rng) To UBound(rng)
tam = tam & Trim(rng(i))
Next
GhepTen1 = tam
End Function
==========
Function GhepTen2(rng As Range) As String
Dim i,j As Long
Dim tam As String
For i = 1 To rng.Rows.count
For j = 1 To rng.Columns.count
tam = tam & Trim(rng.Item(i, j))
Next j
Next i

GhepTen2 = tam
End Function

Trong diễn ai nghiên cứu lĩnh vực này giúp đỡ dùm ! Cám ơn !
 
các bạn ơi mình cũng giống thớt này , gộp 2 ô lại 1 , sau khi đọc xong mình làm được rồi , nhưng khổ nỗi là mỗi dòng của mình có 1 font khác nhau , và in nghiêng , in đậm khác nhau như trong hình ô D1 , bạn nào giúp mình với
attachment.php
i
 
Cho mình hỏi chút.
Mình có một bảng trong Sheet “Dulieu” là toàn bộ dữ liệu
- Cột A là tên của Chồng
- Cột B là tên của Vợ
Giờ phải thêm vào đoạn code trên như thế nào để tên chồng ở hàng trên, tên vợ ở hàng dưới trong một Cell trong cột C của một sheet khác. (giống như ấn tổ hợp phím Alt+Enter khi viết trong cell)
Trích Code
Range("C" + Format(dong_sheet)).Value = Workbooks(work_wb).Worksheets("Dulieu").Range("A" + Format(dong_goc)).Value + Workbooks(work_wb).Worksheets("Dulieu").Range("B" + Format(dong_goc)).Value
 
Lần chỉnh sửa cuối:
Chỉ bạn kimdong cách làm đơn giản nhất nha
B1: thêm cột stt bên chồng 1,3,5,,,
B2: copy danh sach bên vợ bỏ xuống cột chồng, sau đó đánh stt là 2,4,6,8,,,
B3 sắp xếp theo thứ tự là xong
 
Chỉ bạn kimdong cách làm đơn giản nhất nha
B1: thêm cột stt bên chồng 1,3,5,,,
B2: copy danh sach bên vợ bỏ xuống cột chồng, sau đó đánh stt là 2,4,6,8,,,
B3 sắp xếp theo thứ tự là xong
Em có viết Sub xuất bảng biểu ấy anh. Chứ không phải làm thủ công à.
Như dòng code của em trích trên thì tên vợ và chồng ở cùng 1 dòng trong 1 ô
VD: Nguyễn Văn A và Nguyền Thị B
 
Em có viết Sub xuất bảng biểu ấy anh. Chứ không phải làm thủ công à.
Như dòng code của em trích trên thì tên vợ và chồng ở cùng 1 dòng trong 1 ô
VD: Nguyễn Văn A và Nguyền Thị B
Bạn dùng công thức sau ở C1=A1 & CHAR(10) & B1, fill xuống. Chọn cột C - Format cell - Wrap text. Còn code thì mình bó tay.
 
Em có viết Sub xuất bảng biểu ấy anh. Chứ không phải làm thủ công à.
Như dòng code của em trích trên thì tên vợ và chồng ở cùng 1 dòng trong 1 ô
VD: Nguyễn Văn A và Nguyền Thị B
File cụ thể đi, tôi sẽ giúp, chứ khi làm rồi bạn lại đẻ ra các trường hợp khá nữa?
 
Em muốn hỏi câu lệnh VBA xuống dòng như ấn tổ hợp phím Alt + Enter là gì thôi ạ.
Ví dụ: Range("C" + Format(dong_sheet)).Value = Workbooks(work_wb).Worksheets("Dulieu").Range("A" + Format(dong_goc)).Value + Workbooks(work_wb).Worksheets("Dulieu").Range("B" + Format(dong_goc)).Value
Trong ô C em muốn làm như này: Dòng trên là tên Chồng, Dòng dưới là tên vợ ấy. thì phải thêm vào chỗ trước đoạn này là gì (
+ Workbooks(work_wb).Worksheets("Dulieu").Range("B" + Format(dong_goc)).Value)
 
Em muốn hỏi câu lệnh VBA xuống dòng như ấn tổ hợp phím Alt + Enter là gì thôi ạ.
Ví dụ: Range("C" + Format(dong_sheet)).Value = Workbooks(work_wb).Worksheets("Dulieu").Range("A" + Format(dong_goc)).Value + Workbooks(work_wb).Worksheets("Dulieu").Range("B" + Format(dong_goc)).Value
Trong ô C em muốn làm như này: Dòng trên là tên Chồng, Dòng dưới là tên vợ ấy. thì phải thêm vào chỗ trước đoạn này là gì (
+ Workbooks(work_wb).Worksheets("Dulieu").Range("B" + Format(dong_goc)).Value)
Hình như là cái này Chr(10) xuống hàng cái này bài 47 có đề cập rồi mà bạn
 
Xin mấy đại ca cho em thỉnh giáo vài điều như sau:

+em có cell A1, B1 là: Mã 1 và Mã 2

+em có cell A2, B2 là: 10 và 20

+em có cell A3, B3 là: 30 và 0

Em xin nhờ mấy đại ca giúp em 1 đoạn code VBA để nối nội dung các text trên tại ô C2 với nội dung như sau: Mã 1 (10) Mã 2 (20)

Tương tự tại ô C3 là: Mã 1 (30)

Nếu B3=0 thì chỉ nối cột A3, nội dung sẽ là: Mã 2 (30)

Lưu ý: cell A1, B1 là mình để cố định (có thể định dạng range kéo dài khi có nhiều sự lựa chọn)
Em mò hoài mà ko biết cách nào để viết cho đúng.

Hiện em đã mò được cái text nối nội dung lại có code như sau:

Function GhepTen(rng As Range) As String
Dim i, j As Long
Dim tam As String
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
If Len(rng.Item(i, j)) > 0 Then 'bo cell khong co text'
tam = tam & Trim(rng.Item(i, j)) & "; " 'thêm dau ; vao cuoi moi gia tri'
End If
Next j
Next i
GhepTen = Left(tam, Len(tam) - 2) 'bo dau ; cuoi doan text sau khi noi'
GhepTen = Replace(GhepTen, ":;", ":") 'thay the
GhepTen = Replace(GhepTen, "; )", ")") 'thay the
End Function

Còn ghép nội dung từ trên xuống thì em chưa mần được. Mong các sư phụ chỉ giáo
 

File đính kèm

  • test.xlsm
    20.2 KB · Đọc: 13
Xin mấy đại ca cho em thỉnh giáo vài điều như sau:

....

Lưu ý: cell A1, B1 là mình để cố định (có thể định dạng range kéo dài khi có nhiều sự lựa chọn)
Em mò hoài mà ko biết cách nào để viết cho đúng.

Hiện em đã mò được cái text nối nội dung lại có code như sau:

.......
Còn ghép nội dung từ trên xuống thì em chưa mần được. Mong các sư phụ chỉ giáo
Chữ màu đỏ thấy.....ghê quá
Lưu ý: cell A1, B1 là mình để cố định (có thể định dạng range kéo dài khi có nhiều sự lựa chọn)
Để cố định cũng phải khai báo trong code cho nó hiểu
Đại khái code thế này
Mã:
Public Function Gom(Ma, Vung) As String
    Dim I, Kq
        For I = 1 To Vung.Columns.Count
            If Vung(I) > 0 Then Kq = IIf(Kq = "", Ma(I) & " (" & Vung(I) & ")", Kq & " " & Ma(I) & " (" & Vung(I) & ")")
        Next I
    Gom = Kq
End Function
Công thức ở cell muốn lấy kết quả
Muốn bao nhiêu Mã thì cứ thêm vào rồi chỉnh lại địa chỉ trong công thức
Híc
 
Mã:
Public Function Gom(Ma, Vung) As String
    Dim I, Kq
        For I = 1 To Vung.Columns.Count
            If Vung(I) > 0 Then Kq = IIf(Kq = "", Ma(I) & " (" & Vung(I) & ")", Kq & " " & Ma(I) & " (" & Vung(I) & ")")
        Next I
    Gom = Kq
End Function
Công thức ở cell muốn lấy kết quả

Muốn bao nhiêu Mã thì cứ thêm vào rồi chỉnh lại địa chỉ trong công thức
Híc[/QUOTE]


Nói thật là quá nhanh, quá nguy hiểm nun ạ, xin đa tạ --=0 /-*+/ %#^#$

Có 1 câu hỏi nhỏ nữa là:

Ví dụ em muốn gộp tất cả nội dung sheet 1sheet 2 .... sheet (n-1) được đưa vào sheet n với mong muốn là:

nội dung sheet 1 -> chèn thêm 1 cột -> nội dung sheet 2 -> chèn thêm 1 cột ->.... -> sheet (n-1)

Em chỉ có thêm 1 ước ao, 1 khát khao như vậy thôi ạ.... xin nhờ pác thêm phen này nữa nhé! }}}}}}}}}}}}}}}
 
các pác ơi, giúp em với hiu hiu :.,:.,:.,:.,:.,:.,:.,

Lưu ý: ghép nội dung các sheet theo cột... Tks all bro !
 
Thử dùng hàm sau Thầy à
Mã:
Function JoinText(ByVal Cells As Range) As String

    JoinText = Join(WorksheetFunction.Transpose(Cells.Value), Chr(10))

End Function
Cho mình hỏi, nếu mình muốn nối chuỗi có điều kiện có cách nào không vậy? Bạn chỉ giúp mình nhé. Thanks!
 

File đính kèm

  • vd.xlsx
    9.9 KB · Đọc: 4
Cho mình hỏi, nếu mình muốn nối chuỗi có điều kiện có cách nào không vậy? Bạn chỉ giúp mình nhé. Thanks!
1 cách:
PHP:
Function Gop(s As String) As String
    Dim LR, i
    LR = Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To LR
        If Range("A" & i) = s Then
            If InStr(1, Gop, Range("B" & i)) Then GoTo Thu5
            Gop = Gop & ", " & Range("B" & i)
        End If
Thu5:
    Next i
    Gop = Mid(Gop, 2, Len(Gop))
End Function
 
VBA thì nó như thế này:
[GPECODE=vb]Sub NoiDuLieu()
Dim Tmp, Arr(), i As Long
Application.EnableEvents = False
Tmp = Sheet1.[F6:H1000]
ReDim Arr(1 To UBound(Tmp), 1 To 1)
For i = 1 To UBound(Tmp)
If Tmp(i, 1) > 0 Then Arr(i, 1) = Tmp(i, 2) & Tmp(i, 3)
Next
Sheet1.[D6].Resize(UBound(Tmp)) = Arr
Application.EnableEvents = True
End Sub[/GPECODE]
Trong code trên, 2 câu lệnh Application.EnableEvents = FalseApplication.EnableEvents = True nhằm tránh đụng chạm với Sub Worksheet_Change cho Sheet1 của bạn. Mà cái Sub Worksheet_Change của bạn có vấn đề, ai lại đi khai báo biến khơi khơi như vậy, nếu nằm ở dòng riêng thì tên biến phải đi sau từ khóa Dim, còn nếu không muốn Dim thì đưa nó lên dòng trên (đã có Dim) và phân cách bởi dấu phẩy với các biến phía trước.
cám ơn anh đã chia sẻ kiến thức quí giá, em đã sử dụng code vba này để nối chuỗi. tuy nhiên e muốn hỏi anh là em muốn nối một vùng có nhiều chuỗi trong hàng, cột thì code như thế nào ak? vì dùng hàm textjoin để nối nhiều chuỗi nó báo lỗi value. anh có cách nào để code vba với nhiều chuỗi không ak. của em có hàng ngàn chuỗi thì bó tay ak
 
cám ơn anh đã chia sẻ kiến thức quí giá, em đã sử dụng code vba này để nối chuỗi. tuy nhiên e muốn hỏi anh là em muốn nối một vùng có nhiều chuỗi trong hàng, cột thì code như thế nào ak? vì dùng hàm textjoin để nối nhiều chuỗi nó báo lỗi value. anh có cách nào để code vba với nhiều chuỗi không ak. của em có hàng ngàn chuỗi thì bó tay ak
bạ đưa file giả lập và hết quả mong muốn mà hàm textjoin() chưa làm được lên xem
 
Web KT
Back
Top Bottom