excel - Excel VBA:在for循环中跳过复制的单元格
问题描述
我有一些数据,我有一些条件。如果 B 列中的每个单元格都包含“和”、“或”、“和/或”等单词,则创建该行的副本并将其插入到复制行之后的下一行。
这是我的代码:
Sub Macro2()
Dim rng As Range, cell As Range, rowRange As Range
Set rng = Range("B1", Range("B1").End(xlDown))
Dim values As Variant
Dim Result() As String
connectorArray = Array("and/or", "or", "and")
Dim findConnectorWord As String
'Worksheets("Sheet1").Activate
'Range("B1", Range("B1").End(xlDown)).Select
For Each cell In rng
findConnectorWord = FindString(cell.Value, connectorArray)
If findConnectorWord <> vbNullString Then
Result() = Split(cell, findConnectorWord)
Set rowRange = Range("A" & cell.Row, Range("B" & cell.Row).End(xlToRight))
rowRange.Copy
rowRange .Offset(1, 0).Insert Shift:=xlDown
'Logic to skip the next cell
End If
Next cell
End Sub
Function FindString(SearchString As String, arr As Variant) As String
For Each searchWord In arr
If InStr(SearchString, searchWord) > 0 Then
FindString = searchWord
Exit For
End If
Next
End Function
我遇到的问题是,一旦将行复制并插入下一行,下一次迭代就会读取复制的行(“房主或住宅火灾”)并创建另一个副本。我想做的是在复制行后跳过单元格,在 if 条件内查看单元格 B3(假设在复制新单元格时伞(C)被推下)。最好的方法是什么?
解决方案
实现@freeflow 在他的评论中所写内容的可能选项之一:
...
Set cell = Range("B1").End(xlDown) ' start from last cell
Do Until False
findConnectorWord = FindString(cell.Value, connectorArray)
If findConnectorWord <> vbNullString Then
...
Set rowRange = cell.EntireRow
rowRange.Copy
rowRange.Offset(1, 0).Insert Shift:=xlDown
End If
If cell.Row = 1 Then Exit Do ' First row? Enough
Set cell = cell.Offset(-1, 0) ' Shift up
Loop
...
还有一点需要注意 - 在为 connectorArray 定义值时,请在术语中添加空格:" and "
而不是"and"
. 否则,您可以使用一些 Brandon 或 Alexandra 复制该行
推荐阅读
- typescript - 如何使打字稿推断出更具体的类属性类型?
- java - spring cloud config在379:64处抛出Bad Base64输入字符
- php - Laravel 5.5分页响应json返回消息:方法视图不存在状态码500
- node.js - Node.js 安装(Windows 安装程序)在 Windows 10 64 位上过早终止
- neo4j - Neo4j Cypher 手动关系索引、APOC 触发器和数据复制
- python - 你如何在 Python Pandas 中进行分组、排序和限制?(即获得前 10 名)
- c++ - 如何为字符串处理创建流操纵器?
- python - python scrapy 使用 pyinstaller 转换为 exe 文件
- javascript - Nodemailer:从未收到问候
- python - TensorFlow:并行运行多个版本的调用 TF 的 Python 脚本