当前位置:   article > 正文

excel查找某列包含 | 的行号

excel查找某列包含 | 的行号
  1. Sub FindRowsWithPipeToArray()
  2. Dim ws As Worksheet
  3. Dim lastRow As Long
  4. Dim i As Long
  5. Dim outputRow As Long
  6. Dim cellValue As Variant
  7. Dim results() As Long
  8. Dim resultCount As Long
  9. On Error GoTo ErrorHandler ' 错误处理
  10. ' 设置工作表
  11. Set ws = ThisWorkbook.Sheets("Sheet1") ' 请根据需要修改工作表名称
  12. ' 确定A列的最后一行
  13. lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
  14. ' 初始化结果数组
  15. ReDim results(1 To lastRow) ' 初始大小,最大行数
  16. ' 初始化计数器
  17. resultCount = 0
  18. ' 遍历A列的每一行
  19. For i = 1 To lastRow
  20. cellValue = ws.Cells(i, 1).Value
  21. ' 检查单元格内容是否包含 '|'
  22. If Not IsEmpty(cellValue) And InStr(cellValue, "|") > 0 Then
  23. resultCount = resultCount + 1
  24. results(resultCount) = i ' 将行号存入数组
  25. End If
  26. Next i
  27. ' 将结果写回到B列
  28. If resultCount > 0 Then
  29. ws.Range("B1:B" & resultCount).Value = Application.WorksheetFunction.Transpose(results)
  30. End If
  31. MsgBox "查找完成,包含 '|' 的行号已写入B列。"
  32. Exit Sub
  33. ErrorHandler:
  34. MsgBox "发生错误: " & Err.Description
  35. End Sub
  1. 初始化数组:使用 ReDim results(1 To lastRow) 初始化结果数组。最初设定为 lastRow 大小,以确保足够容纳所有可能的行号。
  2. 存储行号:在找到包含 | 的单元格时,将行号存储到 results 数组中,并更新 resultCount 计数器。
  3. 写回数据:使用 Application.WorksheetFunction.Transpose(results) 将结果数组写回到B列。需要使用 Transpose 函数来将一维数组转换为列数据。
  4. 错误处理:使用 On Error GoTo ErrorHandler 来捕获并处理任何潜在错误。

注意事项

  • 数组大小ReDim 的大小是基于 lastRow 的值,这可能会占用较多内存。如果你有很多行,并且实际行号数量远小于总行数,可以考虑先计算行号数量后再分配数组大小。
  • 内存管理:在处理非常大的数据集时,确保系统有足够的内存,以避免因内存不足而出现问题。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/984389
推荐阅读
相关标签
  

闽ICP备14008679号