如何扩展 Excel 中的项目列以便每个项目都占一行?

如何扩展 Excel 中的项目列以便每个项目都占一行?

我有这个:

  -----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 chef 来手动完成此操作,但想知道是否有自动化的方法?(我有 Excel 2007,但很快就会得到 Excel 2010。)

或者,是否有比 Excel 更好的工具可以达到此目的?

谢谢你的时间。

答案1

不需要 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。将 E1 的右下角拖到 G1。双击 G1 的右下角。复制/粘贴值。删除 A:D 列。

答案2

现在将伪代码用于睡觉,但您可能可以使用类似于下面的一些 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

ETC。

相关内容