Excel VBA需求:A列含'test'时将C列内容无空格堆叠到F列
修正后的VBA代码及说明
问题分析
原代码存在两个核心问题:
- 每次匹配到"test"时都固定写入F2单元格,后续内容会直接覆盖之前的,没法实现堆叠效果
- 完全没处理C列内容的去空格需求
修正后的代码
Sub FindValuePaste() Dim FndRng As Range Dim cll As Range Dim nextRow As Long ' 初始化F列写入起始行:如果F1是空行就从F1开始,否则从F2开始 nextRow = IIf(Range("F1").Value = "", 1, 2) Set FndRng = Range("A3:A9") For Each cll In FndRng If cll.Value = "test" Then ' 去除C列内容的所有空格,写入F列下一行 Cells(nextRow, "F").Value = Replace(cll.Offset(0, 2).Value, " ", "") ' 更新下一个写入的行号 nextRow = nextRow + 1 End If Next cll End Sub
关键修改说明
- 新增
nextRow变量跟踪F列可写入的位置,每次写入后行号自动加1,保证内容依次堆叠不覆盖 - 用
Replace(单元格内容, " ", "")移除目标内容里的所有空格;如果只需要去掉首尾空格,换成Trim(cll.Offset(0, 2).Value)就行 - 初始化行号时做了判断,适配F列有无表头的两种情况
内容的提问来源于stack exchange,提问作者Dolly
相关产品推荐
相关产品推荐

