我使用复制方法将数据从A工作表获取到B工作表。但是,结果并不是我的预期。
For Each ss in yesno
If ss.Cells.Value ="yes" Then
Set rng = Union(.Range("A" & ss.Row),
.Range("C" & ss.Row),
.Range("B" & ss.Row),
.Range("D" & ss.Row))
tlr = tws.Range("A" & tws.Row.Count).End(xlUp).offset(1).Row
rng.Copy tws.Cells(tlr,"A")
ElseIf ss.Cells.Value = "no" Then
End If
Next
这个问题我认为它发生在“set rng Union”行。我希望数据结果来自范围A,C,B,D 但它仍显示为A,B,C,D。无论我如何改变秩序。我该如何解决这个问题?
答案 0 :(得分:0)
范围是工作表上出现>>的单元格块 - 您无法更改范围或工作表中单元格的顺序。 Union()
方法返回Range
对象,因此加载单元格或范围的顺序并不重要,它们仍然以相同的顺序存储在工作表的相同位置。
然而,您可以从源数据生成单维数组并使用它。用以下代码替换上面的代码:
For Each ss in yesno
If ss.Cells.Value ="yes" Then
vArray = Array(.Range("A" & ss.Row).Value,
.Range("C" & ss.Row).Value,
.Range("B" & ss.Row).Value,
.Range("D" & ss.Row).Value)
tlr = tws.Range("A" & tws.Row.Count).End(xlUp).offset(1).Row
tws.Cells(tlr, "A").Resize(1, 4).Value = vArray
End If
Next