我需要在一个交叉点上复制值,如下图所示:
我将数据排列为两行(有值),然后一个空行等等。
我尝试了下面的代码,但是输出结果不正确。
提前感谢你的帮助。
Sub Copy_by_crossing()
Dim ws As Worksheet, lastRow As Long, i As Long
Set ws = ThisWorkbook.ActiveSheet
lastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
For i = 2 To lastRow
If ws.Range("E" & i + 1).Value = "" Then
ws.Range("E" & i + 1).Resize(, 4).Value = ws.Range("A" & i, "D" & i).Value
End If
Next i
End Sub
2条答案
按热度按时间sbdsn5lh1#
这似乎行得通:
juud5qan2#
如果您放弃了 MS 365 的较新动态功能(尤其是关于
LET
函数),您可以在单元格E2
中尝试以下公式替代,从而产生溢出范围。该公式本身定义了1、2或0索引,并通过
CHOOSE
将不同的表区域分配给这些索引。LET
函数允许在函数的参数中为部分计算结果赋值,从而避免嵌套函数具有冗余计算。为了更好地理解此处的内容,请使用换行符:
ChooseCols
和ChooseRows
,通过额外应用于每个双行的=CHOOSECOLS(CHOOSEROWS(A2:A3,{2,1}),{2,3,4})
对给定范围进行切片和重新排列,例如显示class、date和hr列2、3和4。