Làm cách nào để mở rộng các cột của các mục trong Excel để mỗi mục nằm trên một dòng riêng?


5

Tôi có cái này:

  -----A-----|-----B-----|-----C-----
1|cherry     |apple      |banana
2|kiwi       |banana     |cantaloupe
3|peach      |grape      |peach
4|           |peach      |watermelon
5|           |strawberry |

Tôi muốn điều này:

  -----A-----|-----B-----|-----C-----
1|           |apple      |
2|           |banana     |banana
3|           |           |cantaloupe
4|cherry     |           |
5|           |grape      |
6|kiwi       |           |
7|peach      |peach      |peach
8|           |strawberry |
9|           |           |watermelon

Về cơ bản mở rộng từng cột theo những gì trong cột và đối chiếu các phần tử tương tự trên dòng riêng của chúng. (Giả sử mỗi cột được sắp xếp.)

Tôi đã làm điều này bằng tay bằng cách chơi đầu bếp Ginsu cắt dán, nhưng tự hỏi liệu có cách nào tự động không? (Tôi có Excel 2007 nhưng sẽ sớm nhận được Excel 2010.)

Ngoài ra, có công cụ nào khác tốt hơn Excel cho mục đích này không?

Cảm ơn vì đã dành thời gian cho tôi.


1
bạn có thể làm điều này với một phụ VBA trong Excel nếu bạn quen với nó. Các mục cần phải được sắp xếp theo bất kỳ cách cụ thể khi làm điều này?
James

Không cần thiết. Tôi có thể sắp xếp sau đó.
JW.

Câu trả lời:


4

VBA là không cần thiết. Tạo một danh sách tất cả các trường hợp (giả sử Cột có các hàng: táo, chuối, dưa đỏ, anh đào, nho, kiwi, đào, dâu, dưa hấu) sau đó chèn =IF(ISERROR(INDEX(A$1:A$5,MATCH($D1,A$1:A$5,0))),"",INDEX(A$1:A$5,MATCH($D1,A$1:A$5,0)))vào E1. Kéo góc RH dưới cùng của E1 sang G1. Nhấp đúp chuột vào góc dưới cùng của G1. Sao chép / Dán giá trị. Xóa các cột A: D.


Tôi cuối cùng đã làm một cái gì đó như thế này. Cảm ơn!
JW.

1

Mã giả bây giờ khi đi ngủ, nhưng bạn có thể làm điều đó với một số VBA tương tự như dưới đây.

Nhận 'phạm vi được sử dụng' cho trang tính bằng cách sử dụng

Dim oSH As Worksheet
Set oSH = ActiveWorkbook.Sheets("MySheetWithList")
Dim data As range
Set data = oSH.UsedRange

Sau đó lặp qua các giá trị cho các cột A: C trên mỗi hàng trong phạm vi được sử dụng, cắt và dán khi bạn khớp các giá trị.

    i = 2

While (i < data.Rows.Count)
    A = oSH.range("A" & i).Value2
    B = oSH.range("B" & i).Value2
    C = oSH.range("C" & i).Value2

    If (A = B) Then
     [Move the cells down in columns B and C and reset used range]
    Else
     [Perform the other checks on same row]
    End If

    i = i + 1
Wend

v.v.

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.