Як розгорнути стовпці елементів у Excel, щоб кожен елемент був у своєму рядку?


5

У мене це:

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

Я хотів би цього:

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

В основному розгорніть кожен стовпець відповідно до того, що знаходиться у стовпці, і порівнюйте подібні елементи у власному рядку. (Припустимо, кожен стовпець відсортований.)

Я робив це вручну, граючи в кухаря Ginsu шеф-кухаря, але цікавився, чи є автоматизований спосіб? (У мене є Excel 2007, але незабаром вийде Excel 2010.)

Як варіант, чи є для цієї мети інший інструмент кращий, ніж Excel?

Дякую за ваш час.


1
ви, ймовірно, могли б зробити це з підменю VBA в Excel, якщо ви знайомі з ним. Чи потрібно сортувати предмети в якомусь конкретному порядку, роблячи це?
Джеймс

Не обов'язково. Я можу сортувати згодом.
JW.

Відповіді:


4

VBA не потрібен. Створіть список усіх примірників (скажімо, що у ColumnD є рядки: яблуко, банан, диня, вишня, виноград, ківі, персик, полуниця, кавун), після чого вставити =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)))в E1. Перетягніть нижній кут RH від E1 до G1. Двічі клацніть нижній кут RH в G1. Скопіюйте / Вставте значення. Видалити стовпці A: D.


Я закінчила щось подібне. Дякую!
JW.

1

Псевдокод поки що лягає спати, але ви, мабуть, могли це зробити за допомогою VBA, подібного до наведеного нижче.

Отримайте "використаний діапазон" для аркуша, використовуючи

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

Потім повторіть значення для стовпців A: C у кожному рядку в межах використовуваного діапазону, вирізаючи та вставляючи, коли ви співпадаєте зі значеннями.

    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

тощо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.