excel - VBA InStr 与 Excel 工作表中的标准

标签 excel vba excel-formula

我仍然是使用 VBA 语言的新手。我需要有关 InStr 方法的帮助,我试图在 Excel 工作表范围内制定我的标准。

Sub AddressCode()
Dim lastrow As Long
Dim i As Integer, icount As Integer

lastrow = ActiveSheet.Range("A30000").End(xlUp).Row
For i = 1 To lastrow
    If InStr(1, (Range("A" & i)), "Taman") <> 0 Then
        icount = icount + 1
        Range("H" & icount & ":L" & icount) = Range("A" & i & ":E" & i).Value
    End If
Next i
End Sub

Instr example

如何将结果列为我的标准,并且结果与我的行地址有偏移。例如,A 列:Alex 在公园慢跑。标准列表:慢跑、运行、跳跃等。

结果是 A 列 Alex 在公园慢跑,B 列慢跑

最佳答案

复制带条件的行范围

快速修复

Sub AddressCode()
    
    Dim ws As Worksheet: Set ws = ActiveSheet
    
    Dim LastRow As Long: LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    ' Or:
    'LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    'LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long, icount As Long
    
    ' The VBA constant 'vbTextCompare' means e.g. "Taman" = "TaMaN"
    ' The VBA constant 'vbBinaryCompare' means e.g. "Taman" <> "TaMaN"
    
    For i = 1 To LastRow
        If InStr(1, ws.Range("A" & i).Value, "Taman", vbTextCompare) > 0 Then
            icount = icount + 1
            ws.Range("H" & icount & ":L" & icount).Value _
                = ws.Range("A" & i & ":E" & i).Value
        End If
    Next i

End Sub

范围和常量

  • 下面说明了让它适用于常量的其他值是多么容易。和他们一起玩,但要小心:不可撤销。
Sub AddressCodeRangeAndConstants()
    
    Const sFirst As String = "A1"
    Const sCriteria As String = "Taman"
    Const dfirst As String = "H1"
    Const nCols As Long = 5
    
    Dim ws As Worksheet: Set ws = ActiveSheet
    
    Dim slCell As Range
    Set slCell = ws.Cells(ws.Rows.Count, ws.Range(sFirst).Column).End(xlUp)
    Dim srg As Range: Set srg = ws.Range(sFirst, slCell)
    
    Dim drg As Range: Set drg = ws.Range(dfirst).Resize(, nCols)
    
    Dim sCell As Range
    For Each sCell In srg.Cells
        If InStr(1, sCell.Value, sCriteria, vbTextCompare) > 0 Then
            drg.Value = sCell.Resize(, nCols).Value
            Set drg = drg.Offset(1)
        End If
    Next sCell

End Sub

关于excel - VBA InStr 与 Excel 工作表中的标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67834360/

相关文章:

vba - 如何获取 WorksheetFunction.SumProduct() 值来匹配 =SUMPRODUCT()?

javascript - HTML 表格 - Excel 导出不工作 Google Chrome 和 IE

python - 使用 Python Pandas 在一个 Excel 文件中创建多个电子表格

excel - 如何在Excel VBA中设置隐藏/过滤单元格的值?

excel - 如何从 openoffice 计算公式中获取一系列值?

xml - 将非规范化数据从 excel 导出到 xml

ms-access - 将解决方案保留在 VBA 中

vba - XLAM/XLA 插件 : is there a better way?

excel - 如何从 Excel 表格动态计算值

excel - 如何从 VBA 函数将范围传递给 Excel 公式