2011-05-05 128 views
1

我有一个Excel文件,其中某些列信息为空。我想用来自空单元格后面两列的信息填充空白单元格。例如:用相邻(列)单元格替换空单元格的Excel VBA代码

E栏是一个人的全名。列F是他们的名字,列G是他们的姓。

因此,如果E是空白我想F和G的内容合并为E.

1 JOHN JONES | JOHN | JONES 
2    | MARY | FORD 
3 FRED MURPHY | FRED | MURPHY 
4    | TONYA | FARMER 

我想要的代码与“玛丽·福特”和行4填充行2中的空单元格'TONYA FARMER'。

我使用Excel 2010,并尝试了不同的组合,但似乎没有任何工作方式我想要它。

回答

2
For Each rw In UsedRange.Rows 
    If rw.Columns("E") = "" Then 
    rw.Columns("E") = rw.Columns("F") & " " & rw.Columns("G") 
    End If 
Next rw 
+0

它说'需要对象'并突出显示代码的第一行。 – 2011-05-05 18:58:32

+0

@Mr_Thomas,我在页面上的按钮Click()中运行例程来测试它,它运行良好,甚至不需要Dim语句。确保将它放在Sheet模块中,以便知道Sheet上下文,或者明确地告诉它。 – 2011-05-05 19:01:56

+0

我有一个'模块'中的代码,我将如何明确地告诉它上下文(希望我说的是正确的 - 我是Excel VBA的新手) – 2011-05-05 19:04:23

2

我想你会需要一个第4列

,因为你需要在空白上的公式或东西 - 但你已经在那里了文本,所以你可以有一个或其他

如果你是这样的

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 | 

如果你愿意,你总是可以隐藏第一列吗?

这除非你想要一个函数作为一个宏运行一次运行来填补空白?

罗布

+0

是的,我需要的VBA代码,因为它是一对夫妇一千记录。我尝试了一些类似于您使用OFFSET的建议,但是我无法获得正确的语法。这里是我的代码:LASTROW = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row A = 2 B = LASTROW 范围( “E” 和A& “:E” 和b)。选择 对于i =一要b If Range(“E”&i).Text =“”Then Range(“E”&i).Select ActiveCell.FormulaR1C1 =“= OFFSET(”“F”“&i&”“,0, 1)&CHAR(45)&OFFSET(“”H“”&i&“”,0,3)“ End If Next i – 2011-05-05 18:12:30

+0

'ActiveCell.Formula ...'行存在问题。 – 2011-05-05 18:13:13

+0

我害怕我不知道如何做到这一点 - 唯一我要说的是,如果它只有几个使用小方形拖动器(bottomright corner)拖动公式到电子表格底部 – Rob 2011-05-05 18:34:23

相关问题