目前我正在做一个老师点评内容的专栏。
我想用内容中的单词之间的空格或逗号或标点符号来分隔。
同时,我想取出内容中的每个单词,然后将它们放入行而不是列中。
例子:
凯瑟琳是个好女孩。-> 这是老师的评语。
在 Excel 中划定界限后,我将“凯瑟琳是个好女孩。”分成 6 列,每列代表 1 个单词。
但是,我希望将单词的结果按行排列。它看起来会像这样,分为 6 行:
Catherine
is
a
good
girl
.
答案1
复制一列或多行中的数据。
在粘贴复制的数据之前,右键单击第一个目标单元格(要粘贴数据的行或列的第一个单元格),然后单击“选择性粘贴”。
在“选择性粘贴”对话框中,选择“转置”,然后单击“确定”。
您会在对话框的右下角看到“Transpose”复选框:
本文来自 Excel 2003 帮助,但该过程适用于最新的 Excel。不过对话框可能看起来不同。
答案2
下面的 VBA 代码可以达到这个效果。
Sub FlattenToSingleCol()
Cells(1, 1).Activate ' Go to the top left
' Go past the last row that starts with a word
Do Until IsEmpty(ActiveCell)
DoEvents
ActiveCell.Offset(1).Select
Loop
' Set curRow to the last row that starts with a word (the row above ActiveCell)
curRow = ActiveCell.Row - 1
Do While curRow > 0
DoEvents
Cells(curRow, 1).Activate
' Go right past the last cell that contains a word
Do Until IsEmpty(ActiveCell)
DoEvents
ActiveCell.Offset(0, 1).Activate
Loop
' Come back left to the last cell that contains a word
If ActiveCell.Column > 1 Then
ActiveCell.Offset(0, -1).Activate
End If
' Insert a new row below the current one for each
Do Until ActiveCell.Column = 1 ' Move each non-empty cell to a new row and move left to the edge
DoEvents
ActiveCell.Offset(1).EntireRow.Insert
Cells(ActiveCell.Row + 1, 1).Value = ActiveCell.Value
ActiveCell.Clear
ActiveCell.Offset(0, -1).Select
Loop
' Go to the row above. Processing from the bottom up avoids re-processing lines we just inserted below.
curRow = ActiveCell.Row - 1
Loop
End Sub