我试图通过一个循环逐行遍历(并在另一个工作表上查找特定值)从合并的单元格(位于.find gcell结果的偏移量)中获取值。如果我们要查找的单元格被合并,.This代码将执行以下操作:
通过对合并像元中包含的值使用.Address -looks,-Unmerges -Gets合并像元的限制-重写这些像元上的值
在这一点上它不起作用,我相信由于变量格式,因为.address给出了一个字符串,而属性rows.value和.MergeArea需要一个范围,我的问题是,我如何才能从地址字符串更改为范围?也许像这样我可以解决这个问题。如果你有任何其他的意见,我很乐意倾听。
非常感谢。
代码:
(循环代码未显示,因为IT工作正常)
lineasemergidasCont = gCell.Offset(, 4).MergeArea.Rows.count
emergidainicio = gCell.Offset(, 4).Address
emergidafinal = gCell.Offset(lineasemergidasCont, 4).Address
goes well until here-------> Range(emergidainicio, emergidafinal).MergeArea.UnMerge
filainicio = emergidainicio.Rows.Value
filafinal = emergidafinal.Rows.Value
For p = filainicio To filafinal
If .Cells(p, 10).Value <> "" Then
.Cells(p, 10).Value = datoemergido
End If
Next p
For s = filainicio To filafinal
datoemergido = .Cells(s, 10).Value
Next s(代码可以高效地继续)
发布于 2014-10-15 17:06:43
@rory,@patrick lapelletier,@therak,谢谢大家!在这里,我放弃了最终可以工作的代码:
将这些合并的单元格-unmerge -copy其中一个上的值,并将其发布到所有合并的单元格中,然后将该值发布到另一个工作表中-take
它还考虑了可以复制的值,将其余结果添加到旧结果之后。这在一个带有.find函数的循环中工作,该函数在gcell上给出结果
do
If gCell.Offset(, 4).MergeArea.Address = gCell.Offset(, 4).Address Then
'Not a merged cell
If HojaNueva.Cells(F2, 20).Value = "" Then
HojaNueva.Cells(F2, 20).Value = gCell.Offset(, 4).Value
Else
hojito1 = HojaNueva.Cells(F2, 20).Value
HojaNueva.Cells(F2, 20).Value = hojito1 & "," & gCell.Offset(, 4).Value
End If
Else
'is a merged cell
lineasemergidasCont = gCell.Offset(, 4).MergeArea.Rows.count
emergidainicio = gCell.Offset(, 4).Address
emergidafinal = gCell.Offset(lineasemergidasCont - 1, 4).Address
Range(emergidainicio).MergeArea.UnMerge
Range(emergidafinal).MergeArea.UnMerge
numeros1 = Range(emergidainicio).Row
numeros2 = Range(emergidafinal).Row
For p = numeros1 To numeros2
If Not ws.Cells(p, 10).Value = "" Then
datoemergido = ws.Cells(p, 10).Value
End If
Next p
For s = numeros1 To numeros2
ws.Cells(s, 10).Value = datoemergido
Next s
numeros1 = ""
numeros2 = ""
If HojaNueva.Cells(F2, 20).Value = "" Then
HojaNueva.Cells(F2, 20).Value = datoemergido
Else
hojito3 = HojaNueva.Cells(F2, 20).Value
HojaNueva.Cells(F2, 20).Value = hojito3 & "," & datoemergido
End If
End If
Set gCell = ws.Columns("F").FindNext(gCell)
Loop While firstAddress <> gCell.Addresshttps://stackoverflow.com/questions/26354839
复制相似问题