Nối chuỗi văn bản từ nhiều ô vào 1 ô

Liên hệ QC

bebo021999

Thành viên gạo cội
Tham gia
26/1/11
Bài viết
5,949
Được thích
8,741
Giới tính
Nam
Nghề nghiệp
GPE
Giả sử ta có 100 ô từ A1 đến A100 chứa nội dung text1 đến text100, câu hỏi là tại ô B1 sẽ là chuỗi nối từ A1 đến A100, tức là "text1text2text3...text100", ta phải dùng hàm gì cho đơn giản? (Có thể dùng CONCENATE hay ký tự "&", nhưng quá rườm rà và vì phải gõ địa chỉ 100 lần!)
Xin ACE cho ý kiến!
 
Có nè bạn ơi! bạn sử dụng thử coi có được không.
 

File đính kèm

Bạn dùng code để lập hàm à, có cách nào dùng hàm hay thủ thuật mà không dùng code không? Mình dốt về code lắm.
 
Hàm có sẳn trong excell giống như bạn nói ở trên đó. Dùng code thì khỏe hơn bạn àh, không thì nhập 100 lần
 
Có lẽ hàm này gọn và nhanh hơn này vì không dùng vòng lặp với Range

Mã:
Function ConStr(Rg As range)
If Rg Is Nothing Or Rg.Columns.Count > 1 Then Exit Function
ConStr = Join(WorksheetFunction.Transpose(Rg), "")
End Function
 
Tổng quát

Bài toán nối chuổi thì không thể dùng công thức thường, phải dùng VBA
Tuy nhiên, các bạn thử làm bài này ở mức tổng quát xem
Tổng quát nghĩa là:
- Có thể nối chuổi trên 1 vùng bất kỳ (vùng liên tục hoặc không liên tục)
- Có thể nối chuổi từ 1 nguồn Array (không phải là Range... chẳng hạn nối chuổi từ mảng ROW($5:$10))
- Dấu phân cách do người dùng tùy chọn
- Bỏ qua các phần tử là rổng hoặc bằng 0
- Cuối cùng là đảm bảo tốc độ của code (nhanh nhất có thể)
 
Với 100 ô chứa dữ liệu nằm ở A1:A100, Có 2 cách không dùng VBA:

Cách 1:
B1 gõ = A1
B2 gõ =B1&A2
Double clicked cái Fill handle của B2
ô B100 là kết quả

Cách 2:
Copy qua word
Nếu là table thi convert table to text
Nhấn Ctrl H
Find What = ^p
Replace With để trống
nhấn replace all

Xem kết quả
Nhấn thanks bài này

Cách 2 dự phòng cho dữ liệu quá dài, vượt giới hạn cho phép của anh Bill.
 
Lần chỉnh sửa cuối:
Với 100 ô chứa dữ liệu nằm ở A1:A100, Có 2 cách không dùng VBA:

Cách 1:
B1 gõ = A1
B2 gõ =B1&A2
Double clicked cái Fill handle của B2
ô B100 là kết quả

Cách 2:
Copy qua word
Nếu là table thi convert table to text
Nhấn Ctrl H
Find What = ^p
Replace With để trống
nhấn replace all

Xem kết quả
Nhấn thanks bài này

Cách 2 dự phòng cho dữ liệu quá dài, vượt giới hạn cho phép của anh Bill.
Sư phụ ơi, cách thì rất nhiều nhưng chưa hẳn là hoàn hảo nếu như theo sự đòi hỏi của em ở trên (nhất là khi tham chiều nằm trên nhiều vùng hoặc là 1 Array nào đó do quá trình tính toán trả về)
 
Ẹc ẹc,
với 2 cách đó giải quyết giới hạn trong đề tài này của tác giả. Vả lại mình cũng đã nói:
Với 100 ô chứa dữ liệu nằm ở A1:A100, Có 2 cách ...
Ai biểu ndu nói: "Bài toán nối chuổi thì không thể dùng công thức thường, phải dùng VBA" làm chi? Khà khà, chọt 1 cái đỡ bùn!

Ngoài ra, cách copy qua word cũng xài được cho vùng không liên tục. Còn ký tự phân cách bất kỳ hả? càng dễ. Lúc convert table to text quýnh cái ký tự đó vô hộp thoại convert. Khỏi Find & Replace luôn.

Còn cả công thức, cả VBA, có thể bị giới hạn chiều dài chuỗi.
 
Lần chỉnh sửa cuối:
Ẹc ẹc,
với 2 cách đó giải quyết giới hạn trong đề tài này của tác giả. Vả lại mình cũng đã nói:
Ai biểu ndu nói: "Bài toán nối chuổi thì không thể dùng công thức thường, phải dùng VBA" làm chi? Khà khà, chọt 1 cái đỡ bùn!
Dù dùng được thì em nghĩ chắc chẳng ai dám... (vì phải xài quá nhiều cell phụ, cột phụ) ---> Nói chung tất cả các bài toán về nối chuổi đều không phải là thế mạnh của công thức
Còn cả công thức, cả VBA, có thể bị giới hạn chiều dài chuỗi.
Nối cở 5000 phần tử lại với nhau là đủ rồi chứ sư phụ
Ẹc... Ẹc...
 
Web KT

Bài viết mới nhất

Back
Top Bottom