根据excel中的单元格值将单行分割成多行

我在Excel中有一行数据。 数据大约是5000+的值。

我想把这个单行分成多行。下面是同样的例子。

我的单行包含如下数据,1 2 3 4 5 A 1 2 4 5 9 5 9 A 2 1 4 A等…

我希望这个单行在它到达每个“A”值后被分割。 下面的输出。

1 2 3 4 5

A 1 2 4 5 9 5 9

A 2 1 4

等等…

有些人可以帮助我如何做到这一点? macros对我很好。 此外,我有像5000+值巨大的数据。

这应该做你的工作。 考虑到您的数据在Sheet1中,输出在Worksheet Sheet2中生成。

  Sub pSplitData() Dim rngColLoop As Range Dim rngSheet1 As Range Dim wksSheet2 As Worksheet Dim intColCounter As Integer Dim intRowCounter As Integer 'Consider the data to be in First row of Sheet1 With Worksheets("Sheet1") Set rngSheet1 = .Range(.Range("A1"), .Range("A1").End(xlToRight)) End With Set wksSheet2 = Worksheets("Sheet2") intRowCounter = 1 intColCounter = 0 'Clear previous output wksSheet2.Range("A1").CurrentRegion.Clear 'Loop through and create output in Sheet2 With rngSheet1 For Each rngColLoop In .Columns If Trim(rngColLoop) <> "" Then If UCase(Trim(rngColLoop)) <> "A" Then intColCounter = intColCounter + 1 wksSheet2.Cells(intRowCounter, intColCounter) = rngColLoop ElseIf UCase(Trim(rngColLoop)) = "A" Then intRowCounter = intRowCounter + 1 intColCounter = 1 wksSheet2.Cells(intRowCounter, intColCounter) = rngColLoop End If End If Next rngColLoop End With Set rngColLoop = Nothing Set rngSheet1 = Nothing Set wksSheet2 = Nothing End Sub 

尝试使用“ Text to Columns并使用A作为分隔符。 您将不得不将A添加回结果单元格中。

如果你的数据是在一个单元格中,比如单元格A1 ,那么你可以使用vba的split将所有的单个部分存储在一个数组中,用字母A分割。

 myArray = Split(Cells(1, 1), "A") 

在你的例子中, myArray(0) = 1 2 3 4 5myArray(1) = 1 2 4 9 5

因此,如果每个元素都需要在自己的行中,则可以将A连接到前面,就像这样

 cells(2, 1) = "A" & myArray(0) cells(3, 1) = "A" & myArray(1) 

等等。

如果你的数据是这样的:

  A || B || C || D || ----------------------------------------- 1 || one || two || three || four || 2 || 

然后在A2中放置=TRANSPOSE(A1:D1) ,并用Ctrl + shift + enter ,这将导致公式如下所示: {=TRANSPOSE(A1:D1)}

结果如下所示:

  A || B || C || D || ----------------------------------------- 1 || one || two || three || four || 2 || one 3 || two 4 || three 5 || four 

或者您是在一次性操作之后,您可以始终:select – >复制; select空单元格 – >粘贴特殊 – >打勾转置