我正在尝试制作和自动报告搜索单元格以查找文本并将其转换为值。所以一个牢房可以有汽车,货车,汽车,卡车,下一个牢房可以只有汽车。
Sub try_to_find_text ()
Dim ALCell As Range
Dim car As Integer
Dim van As Integer
Dim truck As Integer
Dim digger As Integer
For Each ALCell In ActiveSheet.Range("E21:E1000")
Select Case ALCell.Value
Case Is <> ""
Dim Search1, Where1
Search1 = "car"
Where1 = InStr(ActiveCell.Text, Search1)
If Where1 Then
car = car + 1
End If
Case Is = "van"
van = van + 1
Case Is = "truck"
truck = truck + 1
Case Is = "digger"
HCAS = HCAS + 1
Case Is = ""
End Select
Next ALCell
ActiveSheet.Range("B13").Value = car
ActiveSheet.Range("C13").Value = van
ActiveSheet.Range("D13").Value = truck
ActiveSheet.Range("E13").Value = digger
End Sub
上面将在“”中找到具有特定值的单元格,但是如果有更多示例,例如car,van,则将在计数中丢失。在顶部,我想为活动单元格文本创建一个循环,但这没有用,任何帮助都将是有帮助的。谢谢
诀窍是要有一个内部循环,该循环在从工作表单元格获得的数组上进行迭代。
Option Explicit
Sub try_to_find_text()
Dim ALCell As Range
Dim car As Integer
Dim van As Integer
Dim truck As Integer
Dim digger As Integer
For Each ALCell In ActiveSheet.Range("E21:E1000")
Dim myVehicle As Variant
Dim myVehicles As Variant
myVehicles = TriageToArray(ALCell.Value,",")
For Each myVehicle In myVehicles
Select Case myVehicle
Case Is = "car"
car = car + 1
Case Is = "van"
van = van + 1
Case Is = "truck"
truck = truck + 1
Case Is = "digger"
HCAS = HCAS + 1
Case Is = ""
End Select
Next
Next ALCell
ActiveSheet.Range("B13").Value = car
ActiveSheet.Range("C13").Value = van
ActiveSheet.Range("D13").Value = truck
ActiveSheet.Range("E13").Value = digger
End Sub
Public Function TriageToArray(ByVal ipString As String, Optional ByVal ipSeparator As String = " ") As Variant
Dim myArray As Variant
myArray = Split(ipString, ipSeparator)
Dim myIndex As Long
For myIndex = LBound(myArray) To UBound(myArray)
myArray(myIndex) = LCase$(Trim$(myArray(myIndex)))
Next
TriageToArray = myArray
End Function
令人惊讶的感谢,只需要卸下汽车钻头,然后像面包车一样增加,它就很有魅力。太感谢了