循环将if语句与单元格组合

我有一张表,其中3个工作表的所有数据将从单元格D1开始放在彼此之下。 在A到C的列中,计算刚刚粘贴的列的单元格组合。 例如:

cell A2 will be: D2 & E2 Cell B2 will be: D2 & E2 & if (G2 = "" ; F2 ; G2) cell C2 will be: D2 & E2 & if (H2 = "" ; if (G2 = "" ; F2 ; G2) ; H2) 

当我只有一列填写(A栏)时,我有:

 Sub M_snb() for each sh in sheets(Array("uitdraai FD", "uitdraai asw", "uitdraai food")) sn=sh.cells(1).currentregion.offset(1).columns(1) sp=sh.cells(1).currentregion.offset(1) for j=1 to ubound(sn) sn(j,1)=sp(j,2)&sp(j,3)&sp(j,4) next sh.cells(1).currentregion.offset(1).columns(1)=sn next End Sub 

这工作快速和完美,但使用CurrentRegion。 我一直在试图改变这个脚本,所以我可以使用它的其他2列(B列和C列),但到目前为止,我还没有成功这样做。

当我改变代码的第一行,并将单元格(1)更改为单元格(4)时,我发现代码从单元格D1开始,即oke。 即使currentregion.offset(1)是正确的。 但是,当我添加.columns(1)我收到一个错误。 (我尝试了所有的东西,把.select放在最后,然后一步一步地展开代码,看看会发生什么)。

error 438: this property or method are not supported by this object.

我怎样才能以最有效的方式实现我的目标?

(这是基础,我有额外的if语句(有时,F列中的单元格的值是'Zelfzorg ASW',必须更改为'Zelfzorg'

我希望有人可以帮助我,并提供一个代码来执行我想要的操作。

我试图尽可能多地学习,但我不明白上面的代码中会发生什么

那么根据你的评论试试这个。
这比循环更快。

未testing:

 Option Explicit Sub Sample() Dim ws As Worksheet Dim lrow As Long For Each ws in Thisworkbook.Sheets(Array("uitdraai FD", "uitdraai asw", "uitdraai food")) With ws lrow = .Range("D" & Rows.Count).End(xlUp).Row If lrow > 1 Then '~~> checks whether Column D has value other than header .Range("A2:A" & lrow).Formula = "=D2&E2" .Range("B2:B" & lrow).Formula = "=D2&E2&IF(G2="""",F2,G2)" .Range("C2:C" & lrow).Formula = "=D2&E2&IF(H2="""",IF(G2="""",F2,G2),H2)" '~~>next line converts formulas to values, if you don't want it, remove it .Range("A2:C" & lrow).Value = .Range("A2:C" & lrow).Value End If End With Next End Sub 

这是你想要的吗?
代码的作用是把你的公式放在A,B和C列,直到你在D列有价值的地方。
希望这对你有用。
我没有时间去testing,如果遇到问题,只是评论一下。