Nối nhiều chuỗi trong excel

Blue Softs Liên hệ QC

namkpac

Thành viên thường trực
Tham gia
25/11/08
Bài viết
279
Được thích
9
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:

hungmo

Thành viên mới
Tham gia
16/12/07
Bài viết
21
Được thích
5
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 !
 

hathay.net

Thành viên mới
Tham gia
19/1/15
Bài viết
7
Được thích
0
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
 

kimdong_vfu

Thành viên mới
Tham gia
4/4/12
Bài viết
24
Được thích
1
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:

phihndhsp

Thành viên gạo cội
Tham gia
26/12/09
Bài viết
3,335
Được thích
2,443
Giới tính
Nam
Nghề nghiệp
Giáo Viên
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
 

kimdong_vfu

Thành viên mới
Tham gia
4/4/12
Bài viết
24
Được thích
1
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
 

Hau151978

Thành viên tích cực
Tham gia
19/10/11
Bài viết
1,474
Được thích
1,424
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.
 

phihndhsp

Thành viên gạo cội
Tham gia
26/12/09
Bài viết
3,335
Được thích
2,443
Giới tính
Nam
Nghề nghiệp
Giáo Viên
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?
 

kimdong_vfu

Thành viên mới
Tham gia
4/4/12
Bài viết
24
Được thích
1
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)
 

phihndhsp

Thành viên gạo cội
Tham gia
26/12/09
Bài viết
3,335
Được thích
2,443
Giới tính
Nam
Nghề nghiệp
Giáo Viên
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
 

kunopro

Thành viên mới
Tham gia
11/12/12
Bài viết
3
Được thích
0
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: 12

concogia

Gội rồi mới Cạo
Tham gia
17/9/09
Bài viết
3,399
Được thích
6,819
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
 

kunopro

Thành viên mới
Tham gia
11/12/12
Bài viết
3
Được thích
0
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é! }}}}}}}}}}}}}}}
 

kunopro

Thành viên mới
Tham gia
11/12/12
Bài viết
3
Được thích
0
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 !
 

ntbn

Thành viên mới
Tham gia
9/3/14
Bài viết
1
Được thích
0
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

phulien1902

GPE - My love
Tham gia
6/7/13
Bài viết
3,544
Được thích
4,416
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
 

tranhoainam9701

Thành viên mới
Tham gia
15/11/11
Bài viết
6
Được thích
0
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
 

Lê Duy Thương

Cạo lấy gì gội (Dịch quá không gội được)
Tham gia
14/10/09
Bài viết
3,088
Được thích
4,807
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
 
Top Bottom