Excel 无法计算每个单元格中出现的特定符号
我试图创建一个宏,它应该检查多个范围,以确定是否有多个项目用分号分隔;在某些细胞内。如果找到一个,宏将计算该符号的次数;已出现在每个单元格中: 例如,在范围A1中,该符号出现了3次:Excel 无法计算每个单元格中出现的特定符号,excel,vba,split,conditional-statements,Excel,Vba,Split,Conditional Statements,我试图创建一个宏,它应该检查多个范围,以确定是否有多个项目用分号分隔;在某些细胞内。如果找到一个,宏将计算该符号的次数;已出现在每个单元格中: 例如,在范围A1中,该符号出现了3次: apple;orange;guava;malta 到目前为止,我已经尝试过: Sub DistributeItemsToColumns() Dim cel As Range For Each cel In Range("A1:L4") If InStr(cel, ";") >
apple;orange;guava;malta
到目前为止,我已经尝试过:
Sub DistributeItemsToColumns()
Dim cel As Range
For Each cel In Range("A1:L4")
If InStr(cel, ";") > 0 Then
Debug.Print cel 'can't think further
End If
Next cel
End Sub
尝试:
结果:
向上阅读文本至列:无需循环。事实上,录制一个宏,然后选择相关列==>Data选项卡==>Text To Columns。我对您想要的内容感到困惑,所描述的@SiddharthRout方法与下面的答案完全相同。或者这里的关键是跳过单个值吗?是的,棘手的部分总是让人困惑。悉达多首先建议我追求卓越。查看这篇文章的标题,了解我对@JvdV的期望。[1]就问题的标题而言,它已经改变了很多次。请参阅未经编辑的版本。最初的标题是“无法拆分不同单元格的内容并有条件地将其重新排列到列中”[2]您所问的问题并不复杂。这是一个简单的问题。Excel内置了.TextToColumns。如果你像我在第一条评论中建议的那样录制了一个宏,你会得到一个1-2行代码,你可以编辑它来得到你想要的。您不需要一个循环来分割您最初想要的文本[3]VBA不会濒临灭绝。这是一个神话。我不确定你所说的哪些开发人员已经失去了希望:看看VBA标签,人们是否已经放弃了希望?[4] 就能力而言,我们不要走那条路。。。你可以自由地接受这个答案:是的,它做得很好。你能告诉我如何计算这些迹象的出现次数吗;在每个单元中?
Option Explicit
Sub test()
Dim LastRow As Long, i As Long, arr As Variant
Dim NumberOfOccu As Long
With ThisWorkbook.Worksheets("Sheet1")
'Find last row of column A
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
'Loop from row 1 to lastrow
For i = 1 To LastRow
If InStr(.Range("A" & i).Value, ";") Then
'Number of characters
NumberOfOccu = InStr(.Range("A" & i).Value, ";")
arr = Split(.Range("A" & i).Value, ";")
.Range("C" & i).Resize(, UBound(arr) + 1) = arr
End If
Next i
End With
End Sub