如果回答了类似的问题,请道歉。我做了搜索,但找不到我要找的东西。
我有一张电子表格,我已经复制并粘贴了大量有关各种啤酒的数据。我想将包含文本的单个单元格分成对应于啤酒类型和酒精百分比的任意数量的单元格。我遇到麻烦的是,有些啤酒有两个或更多类别,而大多数啤酒只有一个。
这是我试图分割的文本字符串的示例:
American Pale Ale (APA) / 6.40% ABV
Quadrupel (Quad) / 10.20% ABV
American Double / Imperial IPA / 8.00% ABV
American Wild Ale / 7.75% ABV
预期结果是:
Category 1 | Category 2 | Alcohol %
American Pale Ale (APA) | | 6.40% ABV
Quadrupel (Quad) | | 10.20% ABV
American Double | Imperial IPA | 8.00% ABV
American Wild Ale | | 7.75% ABV
对于只有一类啤酒,我一直在使用以下公式:
=RIGHT(D3,LEN(D3)-SEARCH("/",D3,1))
然而,无论啤酒有多少种类,我都希望能有所作为。我觉得必须有可能看到有一个共同的分隔符(/)。
有人可以帮忙吗?
答案 0 :(得分:3)
假设您的工作簿看起来像这样
试试这段代码。我已对代码进行了评论,以便您在理解代码时不会遇到任何问题。
Option Explicit
Sub Sample()
Dim MYAr
Dim ws As Worksheet, wsOutput As Worksheet
Dim Lrow As Long, i As Long, j As Long, rw As Long, SlashCount As Long, col As Long
'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
'~~> get the last row
Lrow = .Range("A" & .Rows.Count).End(xlUp).Row
'~~> Count the max number of "/" in a particular cell
'~~> This will decide the span of the columns
For i = 1 To Lrow
MYAr = Split(.Range("A" & i).Value, "/")
If UBound(MYAr) + 1 > SlashCount Then SlashCount = UBound(MYAr) + 1
Next i
'~~> Add a new worksheet for output
Set wsOutput = ThisWorkbook.Sheets.Add
rw = 1
For i = 1 To Lrow
MYAr = Split(.Range("A" & i).Value, "/")
col = 1
'~~> Write values to column. We will not write the
'~~> Last value of the array here
For j = LBound(MYAr) To (UBound(MYAr) - 1)
wsOutput.Cells(rw, col).Value = MYAr(j)
col = col + 1
Next j
'~~> Write Last value of the array to the last column
wsOutput.Cells(rw, SlashCount).Value = MYAr(UBound(MYAr))
rw = rw + 1
Next i
End With
End Sub
<强>输出强>
答案 1 :(得分:1)
您也可以使用Excel中内置的Text-to-column选项,而不是使用宏。 转到数据 - &gt;文本到列
将弹出一个对话框。在该选择分隔的单选按钮,然后单击下一步。 然后指定要分隔文本的分隔符,然后单击“下一步”并完成。 你会得到你想要的结果。