Nối dữ liệu nhiều cột thành 1 cột

Liên hệ QC

nguyenhongvinh

Thành viên mới
Tham gia
28/3/11
Bài viết
2
Được thích
0
Hi cả nhà, tình hình là mình có 1 vấn đề nan giải, nhờ các cao thủ chỉ bảo giúp.
Trong file đính kèm mình có 3 cột dữ liệu (mỗi cột có 3 dữ liệu)
Cột 1Cột 2Cột 3
147
258
369
Giờ mình muốn nối các cột lại với nhau để được kết quả như sau:

1
2
3
4
5
6
7
8
9

Thì ko biết phải làm thế nào, các bạn chỉ giúp mình với.
Cám ơn cả nhà
 

File đính kèm

  • Ghép cột dữ liệu.xlsx
    9.3 KB · Đọc: 181
Hi cả nhà, tình hình là mình có 1 vấn đề nan giải, nhờ các cao thủ chỉ bảo giúp.
Trong file đính kèm mình có 3 cột dữ liệu (mỗi cột có 3 dữ liệu)
Cột 1Cột 2Cột 3
147
258
369
Giờ mình muốn nối các cột lại với nhau để được kết quả như sau:

1
2
3
4
5
6
7
8
9

Thì ko biết phải làm thế nào, các bạn chỉ giúp mình với.
Cám ơn cả nhà
Chỉ có 3 cột, copy/paste là được rồi
Nếu vấn đề phức tạp hơn, ta dùng VBA
 
File excel của mình có rất nhiều cột, ở đây mình chỉ lấy ví dụ thôi.
Cách sử dụng VBA cụ thể thế nào, bạn nói rõ cho mình được ko.
Cám ơn
Mã:
Function JoinText(ByVal Delimiter As String, ParamArray Arrays()) As String
  Dim aTmp, Arr(), Item, tmp As String
  Dim i As Long, n As Long
  'On Error Resume Next
  For i = LBound(Arrays) To UBound(Arrays)
    aTmp = Arrays(i)
    If Not IsArray(aTmp) Then aTmp = Array(aTmp)
    For Each Item In aTmp
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        n = n + 1
        ReDim Preserve Arr(1 To n)
        Arr(n) = tmp
      End If
    Next
  Next
  If n Then JoinText = Join(Arr, Delimiter)
End Function

Mã:
=+TRIM(MID(SUBSTITUTE(JoinText(",",$B$4:$D$6),",",REPT(" ",255)),ROWS($1:1)*255-254,255))
Bạn Alt+F11, Insert Module, chép đoạn code trên vào, tại ô công thức đánh công thức ở trên
 
Lần chỉnh sửa cuối:
Hi cả nhà, tình hình là mình có 1 vấn đề nan giải, nhờ các cao thủ chỉ bảo giúp.
Trong file đính kèm mình có 3 cột dữ liệu (mỗi cột có 3 dữ liệu)
Cột 1Cột 2Cột 3
147
258
369
Giờ mình muốn nối các cột lại với nhau để được kết quả như sau:

1
2
3
4
5
6
7
8
9

Thì ko biết phải làm thế nào, các bạn chỉ giúp mình với.
Cám ơn cả nhà
Nếu các cột có số ô đều bằng 3 ô thì công thức tại B10 là
B10=OFFSET($B$4,MOD(ROW(A3),3),INT(ROW(A3)/3)-1), kéo xuống. Nếu mỗi cột có số ô đều bằng n thì thay số 3 bằng n.
 
Lần chỉnh sửa cuối:
Nhiều cột tức là cụ thể bao nhiêu cột?
Có lẽ do bạn quen chạy code nên ít chịu tìm hiểu cách sử dụng bảng tính. Cứ thấy từ "nhiều" là rối lên.

Tôi copy sheet sang một sheet tạm; hide các dòng từ 2 đến dòng áp chót - mục đích để copy cột cho lẹ.
Và cứ copy các cột từ B đến XX trở về sheet đầu.
Mỗi cột tôi làm không quá 5 giây. Làm xong, xoá sheet tạm. Tất cả trên dưới 10 phút. Nhanh hơn hỏi, lấy code, chạy code nhiều.

tb. tôi thử đem qua máy có màn hình rộng, split screen để nhìn 2 sheets một lúc, copy còn nhanh hơn nữa.
 
Anh em xem CT hàm của mình giống như trên sao nó đi ko đúng thứ tự
=+TRIM(MID(SUBSTITUTE(JoinText(",",$A$1:$C$10),",",REPT(" ",255)),ROWS($1:1)*255-254,255))
 

File đính kèm

  • Book1.xlsx
    14.8 KB · Đọc: 111
Có thể+ gộp 1000 cột hay ko anh.....và số thứ tự đến 1000 và CT thế này có đúng ko...
=+TRIM(MID(SUBSTITUTE(JoinText(",",$A$1:$C$1000),"," ,REPT(" ",255)),ROWS($1:1)*255-254,255))
 
bảng tính mà tới 1000 cột. chắc là cỡ bự lắm đó, thường thường tôi thấy bảng tính vài mươi cột là lớn lắm rồi, nếu mà số lượng cột lớn thì nên dùng VBA
 
Anh em xem CT hàm của mình giống như trên sao nó đi ko đúng thứ tự
=+TRIM(MID(SUBSTITUTE(JoinText(",",$A$1:$C$10),",",REPT(" ",255)),ROWS($1:1)*255-254,255))

Đổi số 255 thành 1000
(và đương nhiên phải đổi 254 thành 999)
------------------
Mà sao bài này lại dùng JoinText nhỉ? Dùng công cụ sai mục đích ---> Phí
 
Em thử dùng CT =OFFSET($B$1,MOD(ROW(B1000),1000),INT(ROW(B1000)/1000)-1) này có vẽ hay hơn.......
CHo em hỏi thêm mình muốn kéo lê từ 1 đến 8000 thì có cách nào khác nhanh hơn ko..... chứ kéo theo thứ tự dãy tăng dần lâu lắm....nhiều khi đến khoảng 100.000 nửa...(Vì mục đích của em là từ excel làm số liệu có sẵng....rồi chuyển sang MAPINFO làm cho tiện)...Cám ơn anh Phihndhsp nhiều......vì anh đã giúp em rất nhiều...
 
Mình dùng công thức như các bạn chỉ dẫn nhưng không ra, có bạn nào giúp mình với


Hi cả nhà, tình hình là mình có 1 vấn đề nan giải, nhờ các cao thủ chỉ bảo giúp.
Trong file đính kèm mình có 3 cột dữ liệu (mỗi cột có 3 dữ liệu)
Cột 1Cột 2Cột 3
147
258
369
Giờ mình muốn nối các cột lại với nhau để được kết quả như sau:

1
2
3
4
5
6
7
8
9

Thì ko biết phải làm thế nào, các bạn chỉ giúp mình với.
Cám ơn cả nhà
 
em cũng thử như trên mà không được các bác xem giúp em
 

File đính kèm

  • Book1-test.xlsx
    2.4 MB · Đọc: 53
Nếu các cột có số ô đều bằng 3 ô thì công thức tại B10 là
B10=OFFSET($B$4,MOD(ROW(A3),3),INT(ROW(A3)/3)-1), kéo xuống. Nếu mỗi cột có số ô đều bằng n thì thay số 3 bằng n.

Bạn ơi cho mình hỏi nếu các cột có số dòng không bằng nhau, mình làm theo công thức bên dưới thì những dòng trống hiện số 0

=INDEX(VungDuLieu,MOD(ROW(A1)-1,ROWS(VungDuLieu))+1,INT((ROW(A1)-1)/ROWS(VungDuLieu))+1)

mình có cách nào để nối lại mà nó không hiện số 0 ở các ô trống của dòng đó k bạn?
 
Bạn ơi cho mình hỏi nếu các cột có số dòng không bằng nhau, mình làm theo công thức bên dưới thì những dòng trống hiện số 0

=INDEX(VungDuLieu,MOD(ROW(A1)-1,ROWS(VungDuLieu))+1,INT((ROW(A1)-1)/ROWS(VungDuLieu))+1)

mình có cách nào để nối lại mà nó không hiện số 0 ở các ô trống của dòng đó k bạn?
Muốn dùng VBA thì tham khảo File trong bài viết ở Link sau (nhấn nút là xong luôn) khỏi hàm chi cho nặng File:
Ghép nhiều cột thành một cột
 
Web KT
Back
Top Bottom