Lấy dữ liệu từ hàng ngang sang hàng dọc (1 người xem)

  • Thread starter Thread starter tuan9179
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

tuan9179

Thành viên mới
Tham gia
30/5/13
Bài viết
4
Được thích
0
Mình muốn nhờ các cao thủ giải đáp hộ bài toán này. Trong file đính kèm mình có 2 phần Input và Output. Mình muốn khi nhập vào như phần Input thì sẽ hiển thị ra dữ liệu như phần Output. Mong mọi người giúp đỡ.
Thanks các bạn nhiều!
 

File đính kèm

Mình muốn nhờ các cao thủ giải đáp hộ bài toán này. Trong file đính kèm mình có 2 phần Input và Output. Mình muốn khi nhập vào như phần Input thì sẽ hiển thị ra dữ liệu như phần Output. Mong mọi người giúp đỡ.
Thanks các bạn nhiều!
Bài toán này nếu dùng VBA thì chẳng có khó khăn gì. Công thức thì chịu thua.
PHP:
Sub doc_ngang()
Dim data(), i, j
data = Range([B3], [B65536].End(3)).Resize(, 10).Value
   For i = 1 To UBound(data, 2)
   With CreateObject("scripting.dictionary")
      For j = 2 To UBound(data)
         If Not .exists(data(j, i)) Then
            .Add data(j, i), ""
         Else
            data(j, i) = Empty
         End If
      Next
      End With
   Next
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(data, 2)
      For j = 2 To UBound(data)
         If data(j, i) <> "" Then
            If Not .exists(data(j, i)) Then
               .Add data(j, i), data(1, i)
            Else
              .Item(data(j, i)) = .Item(data(j, i)) & "," & data(1, i)
            End If
         End If
      Next
   Next
   [P3].Resize(.Count) = Application.Transpose(.keys)
   [Q3].Resize(.Count) = Application.Transpose(.items)
End With
End Sub
 
Bài toán này nếu dùng VBA thì chẳng có khó khăn gì. Công thức thì chịu thua.
=IF(OR(N3=$B$4:$B$6);$B$3;"")&IF(OR(N3=$C$4:$C$6);","&$C$3;"")&IF(OR(N3=$D$4:$D$6);","&$D$3;"")&IF(OR(N3=$E$4:$E$6);","&$E$3;"")&IF(OR(N3=$F$4:$F$6);","&$F$3;"")&IF(OR(N3=$G$4:$G$6);","&$G$3;"")&IF(OR(N3=$H$4:$H$6);","&$H$3;"")&IF(OR(N3=$I$4:$I$6);","&$I$3;"")&IF(OR(N3=$J$4:$J$6);","&$J$3;"")&IF(OR(N3=$K$4:$K$6);","&$K$3;"")

Em không hiểu về VBA mấy nên cố tình dùng hàm mảng
Hàm được kết quả nhưng thừa một dấu , ở đầu nhờ mọi người giải quyết nốt dấu , ở đầu
 

File đính kèm

=IF(OR(N3=$B$4:$B$6);$B$3;"")&IF(OR(N3=$C$4:$C$6);","&$C$3;"")&IF(OR(N3=$D$4:$D$6);","&$D$3;"")&IF(OR(N3=$E$4:$E$6);","&$E$3;"")&IF(OR(N3=$F$4:$F$6);","&$F$3;"")&IF(OR(N3=$G$4:$G$6);","&$G$3;"")&IF(OR(N3=$H$4:$H$6);","&$H$3;"")&IF(OR(N3=$I$4:$I$6);","&$I$3;"")&IF(OR(N3=$J$4:$J$6);","&$J$3;"")&IF(OR(N3=$K$4:$K$6);","&$K$3;"")

Em không hiểu về VBA mấy nên cố tình dùng hàm mảng
Hàm được kết quả nhưng thừa một dấu , ở đầu nhờ mọi người giải quyết nốt dấu , ở đầu

Thay vì nối nhau bằng dấu "," thì bạn cải tiến lại, nối chúng với nhau bằng khoảng trắng... Xong, TRIM kết quả và SUBSTITUTE(kết quả, " ", ",") là xong!
-------------------------------
Có điều: Cũng may ở đây chỉ có 10 chuổi, nếu là 100 chuổi hoặc hơn nữa thì không biết bạn có đủ kiên nhẫn để gõ không nữa?
Ẹc... Ẹc...
-------------------------------
Nói tóm lại: Những bài toán có liên quan đến NỐI CHUỔI đều không phải là thế mạnh của công thức (bác Bill cũng chưa viết hàm nào để nối chuổi từ mảng cả)
 
Thay vì nối nhau bằng dấu "," thì bạn cải tiến lại, nối chúng với nhau bằng khoảng trắng... Xong, TRIM kết quả và SUBSTITUTE(kết quả, " ", ",") là xong!
-------------------------------
Có điều: Cũng may ở đây chỉ có 10 chuổi, nếu là 100 chuổi hoặc hơn nữa thì không biết bạn có đủ kiên nhẫn để gõ không nữa?
Ẹc... Ẹc...
-------------------------------
Nói tóm lại: Những bài toán có liên quan đến NỐI CHUỔI đều không phải là thế mạnh của công thức (bác Bill cũng chưa viết hàm nào để nối chuổi từ mảng cả)
Cảm ơn thầy Tình thế bí quá đâm trò làm liều, may mà dùng Excel 2010 nên có thể lồng nhiều hàm if vậy
=SUBSTITUTE(TRIM(IF(OR(N3=$B$4:$B$6);$B$3;"")&IF(OR(N3=$C$4:$C$6);" "&$C$3;"")&IF(OR(N3=$D$4:$D$6);" "&$D$3;"")&IF(OR(N3=$E$4:$E$6);" "&$E$3;"")&IF(OR(N3=$F$4:$F$6);" "&$F$3;"")&IF(OR(N3=$G$4:$G$6);" "&$G$3;"")&IF(OR(N3=$H$4:$H$6);" "&$H$3;"")&IF(OR(N3=$I$4:$I$6);" "&$I$3;"")&IF(OR(N3=$J$4:$J$6);" "&$J$3;"")&IF(OR(N3=$K$4:$K$6);" "&$K$3;""));" ";",")
 

File đính kèm

Lần chỉnh sửa cuối:
may mà dùng Excel 2010 nên có thể lồng nhiều hàm if vậy

Vấn đề hổng phải là có thể lồng bao nhiêu hàm IF
Ý tôi muốn nói ở đây là: Khi số lượng chuổi cần nối nhiều quá (cở 100 chuổi trở lên) thì ai có đủ kiên nhẫn để mà gõ đây?
(Mà dù đủ kiên nhẫn nhưng nếu có sai sót thì chắc chắn cũng không biết đường đâu mà lần)
 
Thay vì nối nhau bằng dấu "," thì bạn cải tiến lại, nối chúng với nhau bằng khoảng trắng... Xong, TRIM kết quả và SUBSTITUTE(kết quả, " ", ",") là xong!
-------------------------------
Có điều: Cũng may ở đây chỉ có 10 chuổi, nếu là 100 chuổi hoặc hơn nữa thì không biết bạn có đủ kiên nhẫn để gõ không nữa?
Ẹc... Ẹc...
-------------------------------
Nói tóm lại: Những bài toán có liên quan đến NỐI CHUỔI đều không phải là thế mạnh của công thức (bác Bill cũng chưa viết hàm nào để nối chuổi từ mảng cả)
Với bài toán này thì dùng một công thức sẽ khó có thể ra kết quả như ý được. Chỉ dùng VBA là hợp lý nhất thôi. Viết công thức như bạn hieuxd nếu dữ liệu nhiều thì hại não lắm :-=
 
Với bài toán này thì dùng một công thức sẽ khó có thể ra kết quả như ý được. Chỉ dùng VBA là hợp lý nhất thôi. Viết công thức như bạn hieuxd nếu dữ liệu nhiều thì hại não lắm :-=
Nhưng mà code bài 2 của mình viết có đúng ý của bạn chưa?
 
Nhưng mà code bài 2 của mình viết có đúng ý của bạn chưa?
Đúng ý bạn ấy chưa mình hổng biết, nhưng đúng với ý mình rồi
Nhưng ( lại nhưng), chú Hải có thể bớt một em For For đi được hông, For nhiều quá chóng mặt lắm
Híc
Thân
 
Với bài toán này thì dùng một công thức sẽ khó có thể ra kết quả như ý được. Chỉ dùng VBA là hợp lý nhất thôi. Viết công thức như bạn hieuxd nếu dữ liệu nhiều thì hại não lắm :-=

Lúc đầu mình thấy bạn hỏi ở Box Hàm và công thức nên cố tình làm bằng hàm và công thức thôi
nếu không hại não thì cũng không nên lão được
Trước đây mình không biết gì về VBA nên có viết một số hàm dài cả một trang giấy luôn
để hạn chế sai sót thì mình phải có cách kiểm soát chứ
Mình thường hay Copy đoạn công thức rồi sửa cứ hì hục gõ từ đầu đến cuối thì nhầm là không tránh được
 
Đúng ý bạn ấy chưa mình hổng biết, nhưng đúng với ý mình rồi
Nhưng ( lại nhưng), chú Hải có thể bớt một em For For đi được hông, For nhiều quá chóng mặt lắm
Híc
Thân
Em nghĩ dùng For Each thì bớt đi 1 vòng For
 
Lúc đầu mình thấy bạn hỏi ở Box Hàm và công thức nên cố tình làm bằng hàm và công thức thôi
nếu không hại não thì cũng không nên lão được
Trước đây mình không biết gì về VBA nên có viết một số hàm dài cả một trang giấy luôn
để hạn chế sai sót thì mình phải có cách kiểm soát chứ
Mình thường hay Copy đoạn công thức rồi sửa cứ hì hục gõ từ đầu đến cuối thì nhầm là không tránh được
Mình cũng ko biết nhiều về VBA nên mình mới hỏi trong Box Hàm và Công thức. Mình nghĩ nếu có cách nào làm bằng công thức mà ra được kết quả thì mình sẽ áp dụng. Nhưng với công thức dài ngoằng và rắc rối như của bạn thì mình sẽ chọn VBA dùng sẽ đơn giản hơn. Dù sao mình cũng cảm ơn bạn đã dành thời gian cho bài viết của mình./-*+/
 

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

Back
Top Bottom