Excel VBA代码用相邻(列)单元格替换空单元格
Posted
技术标签:
【中文标题】Excel VBA代码用相邻(列)单元格替换空单元格【英文标题】:Excel VBA code to replace empty cell with adjacent (column) cells 【发布时间】:2011-05-05 17:45:25 【问题描述】:我有一个 Excel 文件,其中某些列信息为空白。我想用空单元格之后的两列中的信息填充空白单元格。例如:
E 列是一个人的全名。 F 列是他们的名字,G 列是他们的姓氏。
所以,如果 E 为空,我想将 F 和 G 的内容合并到 E 中。
1 JOHN JONES | JOHN | JONES
2 | MARY | FORD
3 FRED MURPHY | FRED | MURPHY
4 | TONYA | FARMER
我希望代码用“MARY FORD”填充第 2 行的空单元格,用“TONYA FARMER”填充第 4 行的空单元格。
我正在使用 Excel 2010 并尝试了不同的组合,但似乎没有什么能按我想要的方式工作。
【问题讨论】:
【参考方案1】:For Each rw In UsedRange.Rows
If rw.Columns("E") = "" Then
rw.Columns("E") = rw.Columns("F") & " " & rw.Columns("G")
End If
Next rw
【讨论】:
它显示“需要对象”并突出显示代码的第一行。 @Mr_Thomas,我在 Click() 子程序中为页面上的一个按钮运行了例程来测试它,它运行良好,甚至不需要 Dim 语句。确保你要么把它放在一个 Sheet 模块中,以便它知道 Sheet 上下文,要么明确地告诉它。 我在“模块”中有代码,我该如何明确地告诉它上下文(希望我说得对——我是 Excel VBA 的新手) @Mr_Thomas,我只想在我正在处理的页面上创建一个 Active-X 按钮(非表单)。然后右键单击(在设计模式下,它将开始),然后选择“查看代码”。这将在 Sheet 模块中创建一个 Click Sub,然后只需插入您的代码,返回页面并退出设计模式,然后单击按钮。 哇!这就像一个冠军。但是,这个宏是我针对数据运行的一大组宏的一部分。对于“咧嘴笑”,我会添加什么来提供工作表上下文?【参考方案2】:我认为您将需要第四列
因为你需要一个公式或空白处的东西 - 但是你有文本,所以你可以有一个或另一个
如果你是这样的
1 JOHN JONES | =IF(A2="",CONCATENATE(C2," ",D2),A2) | JOHN | JONES |
2 | =IF(A3="",CONCATENATE(C3," ",D3),A3) | MARY | FORD |
3 FRED MURPHY | =IF(A4="",CONCATENATE(C4," ",D4),A4) | FRED | MURPHY |
4 | =IF(A5="",CONCATENATE(C5," ",D5),A5) | TONYA | FARMER |
如果你愿意,你总是可以隐藏第一列吗?
这除非您希望函数作为宏运行作为一次性运行来填补空白?
罗伯
【讨论】:
是的,我需要 VBA 代码,因为它有几千条记录。我尝试了类似于您对 OFFSET 的建议的方法,但我无法正确使用语法。这是我的代码: lastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row a = 2 b = lastRow Range("E" & a & ":E" & b).Select For i = a To b If Range("E " & i).Text = "" 然后 Range("E" & i).Select ActiveCell.FormulaR1C1 = "=OFFSET(""F"" & i & "",0,1) & CHAR(45) & OFFSET (""H"" & i & "",0,3)" End If Next i 'ActiveCell.Formula...' 行有问题。 恐怕我不知道该怎么做 - 我只想说如果它只有几千个使用小方形拖动器(右下角)将公式拖到底部电子表格以上是关于Excel VBA代码用相邻(列)单元格替换空单元格的主要内容,如果未能解决你的问题,请参考以下文章
如果在excel VBA中判断A列中的空白单元格,遇到后就终止程序
用excel中的VBA,然后根据excel中单元格中内容,批量替换一个word的模板doc中的字符。字符有很多处。