【发布时间】:2014-01-28 16:01:15
【问题描述】:
我有一张工作表,其中 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 开始,这很好。甚至 currentregion.offset(1) 都是正确的。但是当我添加 .columns(1) 时,我收到一个错误。 (我尝试了所有方法,将 .select 放在最后,并逐步扩展代码以查看会发生什么)。
error 438:
this property or method are not supported by this object.
我怎样才能以最有效的方式实现我的目标?
(这是基础,我有额外的if 语句(有时,F 列中单元格的值是“Zelfzorg ASW”,必须更改为“Zelfzorg”
我希望有人可以帮助我并提供代码来执行我想要的操作。
我正在尝试尽可能多地学习这一点,但我不明白上面代码中发生了什么
【问题讨论】:
-
您会收到该错误,因为
.columnn不是Cell的属性。我不知道你想做什么,不能听从你的解释。但是如果要选择列,可以使用EntireColumn属性。 -
感谢您的反应。我想要做的是代码检查 D 列中的单元格是否为空。对于 D 列中的单元格不为空(没有值!)的每一行,代码必须将提到的组合放入 A、B 和 C 列中的单元格中。这必须完成,直到 D 列中的最后一行具有已到达,并且最后一行的 A、B 和 C 列中的单元格填充了正确的组合。我发布的代码是由另一个论坛上的某人建议的,但我想这仅适用于 A 列,因为
CurrentRegion -
我根据您的评论发布了答案。我不使用当前区域,我不喜欢它。我也不使用循环,而是使用
Range对象的.Formula属性。希望这接近你想要的。