Excel怎么让列数据交叉填充到另一列,求各位大神帮忙,感激不尽,(最好有解析)!

如题所述

见截图

D1输入

=IF(MOD(ROW(A1)-1,6)<=3,OFFSET($A$1,MOD(ROW(A1)-1,6)+4*INT((ROW(A1)-1)/6),),OFFSET($B$1,MOD(ROW(A1)-1,2)+2*INT((ROW(A1)-1)/6),))

公式下拉

追问

1.中间有间隔的呢,图已经改,如要改间隔应改哪些数据。
2.第二个问题如果图中A列及C列分别在两个独立表中位置都在A列,该如何写公式?

追答

D1输入

=IF(SUMPRODUCT(N(MOD(ROW(A1)-1,8)={6,7})),"",IF(MOD(ROW(A1)-1,8)<=3,OFFSET($A$1,MOD(ROW(A1)-1,8)+4*INT((ROW(A1)-1)/8),),OFFSET($B$1,MOD(ROW(A1)-1,2)+2*INT((ROW(A1)-1)/8),)))

下拉

追问

若第一行留空,用做表头,公式应该怎么改,大神再帮个忙,谢谢!

1.若第一行留空,用做表头,公式应该怎么改,大神再帮个忙,谢谢!
2.要改两个结果数据间空白间隔数量需改哪些数据。

追答

如果空一行

D2输入

=IF(SUMPRODUCT(N(MOD(ROW(A1)-1,8)={6,7})),"",IF(MOD(ROW(A1)-1,8)<=3,OFFSET($A$2,MOD(ROW(A1)-1,8)+4*INT((ROW(A1)-1)/8),),OFFSET($B$2,MOD(ROW(A1)-1,2)+2*INT((ROW(A1)-1)/8),)))

如果间隔数量为3,C2输入

=IF(SUMPRODUCT(N(MOD(ROW(A1)-1,9)=ROW($6:$8))),"",IF(MOD(ROW(A1)-1,9)<=3,OFFSET($A$2,MOD(ROW(A1)-1,9)+4*INT((ROW(A1)-1)/9),),OFFSET($B$2,MOD(ROW(A1)-1,2)+2*INT((ROW(A1)-1)/9),)))

你自己分析一下两个公式变动情况,你就可以总结出规律来,空几个格都是可以的

row($6:$8)等同于{6,7,8},空三哥格,如空4个,公式内9改为10,row($6:$8)改为row($6:$9)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-26
写代码可以实现
第2个回答  2019-02-25

复杂的使用代码

会启用宏么?


戳我头像,一切都会有的。 所得取决于所付出的。

第3个回答  2019-02-25
是乱填还是有规律填呢?有要求吗?你可以在D列中D1填=A1然后下拉到D4在D5D6单元格填B1B2,然后选中D1到D6下拉填充就实现图中的交叉填充了
第4个回答  2019-02-25

公式不知道

可以用vba

Sub AA()
Dim i, k
  For i = 1 To Range("a65536").End(xlUp).Row Step 4
    For k = 1 To 2
    N = Range("D65536").End(xlUp).Row
    Range(Cells(i, k), Cells(i + 3, k)).Copy Cells(N + 1, "d")
         Next
     Next
End Sub

第5个回答  2019-02-27
采用vba比较方便:
Sub testt()
Dim i, k
For i = 1 To Cells(rows.count,1).End(xlUp).Row Step 4
For k = 1 To 2
n= Cells(rows.count,4).End(xlUp).Row
Range(Cells(i, k), Cells(i + 3, k)).Copy Cells(n+ 1, "d")
Next
Next
End Sub