Excel - giá trị trục trong một ô (dưới dạng giá trị được phân tách bằng dấu phẩy)


10

Excel - giá trị trục trong một ô (dưới dạng giá trị được phân tách bằng dấu phẩy)

Tôi có hai cột dữ liệu:

Supplier1|Product1
Supplier1|Product2
Supplier1|Product4
Supplier1|Product7
Supplier2|Product3
Supplier2|Product5

Tôi muốn 'xoay vòng' quanh Nhà cung cấp và đưa ra danh sách các sản phẩm trong một ô duy nhất, được phân tách bằng dấu phẩy, ví dụ:

Supplier1|Product1,Product2,Product4,Product7
Supplier2|Product3,Product5

Có khoảng 1000 nhà cung cấp và 0 & lt; sản phẩm & lt; = 10.

Giải pháp hiện tại của tôi liên quan đến việc sử dụng các bảng trụ, lưu dưới dạng CSV, v.v. Một giải pháp không phải VBA sẽ là tuyệt vời.


Bạn cần một truy vấn SQL để làm điều đó một cách dễ dàng. Bạn có thể xuất sang cơ sở dữ liệu của một số mô tả?
Rhys Gibson

Câu trả lời:


19

Đây là một giải pháp bảng không phải VBA, không trụ, chỉ sử dụng một vài công thức.

  1. Đầu tiên, tôi đã sử dụng "Chuyển văn bản thành cột" để phân chia dữ liệu của bạn tại dấu phân cách "đường ống" đó (đường dọc) thành 2 cột; cột "Nhà cung cấp" và cột "Sản phẩm". Những người đi trong cột A và B, tương ứng. (Nó xuất hiện trong bài viết của bạn rằng chúng được kết hợp trong một cột, vì vậy trước tiên tôi tách chúng ra. Bạn sẽ không phải làm điều này.)

  2. Trong cột C, mà tôi đặt tên là cột "Ghép", tôi đã sử dụng công thức này, bắt đầu từ ô C2 và sao chép tất cả xuống: = IF (A2 = A1, C1 & amp; "," & amp; B2, A2 & amp; "| "& amp; B2)

  3. Trong cột D, mà tôi đặt tên là "Nhà cung cấpChangesAtNextLine?" Tôi đã sử dụng công thức này (bắt đầu từ D2 và sao chép toàn bộ): = IF (A2 = A3, "", "Đã thay đổi")

  4. Bây giờ bạn chỉ có thể lọc trên cột D chỉ với các giá trị "đã thay đổi".

Tốt săn bắn!


1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. Trong col3 (có nghĩa là C3) sử dụng công thức = IF (A2 = A1, B2 & amp; "," & amp; C1, B2) bắt đầu ô C2 trở đi và kéo xuống.
  2. trong C4 (có nghĩa là cột4) sử dụng công thức = IF (A2 = A3, "", "đã thay đổi") bắt đầu ô D2 trở đi và kéo xuống.
  3. Lọc trên Mới trên C4 (có nghĩa là col4) và bạn sẽ nhận được kết quả mong muốn.

0

Thêm cột C làm bộ đếm *: = COUNTIF (A $ 2: A $ 528, A2)
Thêm D là số gia * = IF (A2 = A1, D1 + 1, 1)
Thêm E để ghép *: = IF (A1 = A2, E1 & amp; "," & amp; B2, B2)
Thêm F để chỉ giữ lại concat cuối cùng : = IF (VÀ (C2 = D2, E4 & lt; & gt; ""), E4, "")
chú thích
thêm vào ô 2 và kéo xuống (hoặc nhấp đúp vào góc phải) để áp dụng công thức cho tất cả các ô trong cột

sao chép và dán dưới dạng các giá trị trong một trang tính khác, sắp xếp giảm dần theo F, xóa phần còn lại


quá nhiều việc phải làm ... Giải pháp của F106dart thanh lịch hơn.
ihightower
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.