欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
朋友们好,这里是EXCEL应用之家,坚持分享EXCEL操作技巧。
今天来和大家分享一道简单的基础题目。原题目是这样的:
题目要求将左侧数据格式转换为右侧的格式,并且,可以写3条公式。一条公式出比较难,三条公式还不简单!
01
INDEX函数法
在单元格J1、K1和L1中分别输入下列公式即可。
=INDEX(A$2:A$5,INT((ROW()-2)/7)+1)
=INDEX(B$1:H$1,MOD(ROW()-2,7)+1)
=INDEX(B$2:H$5,INT((ROW()-2)/7)+1,MOD(ROW()-2,7)+1)
三条公式都比较简单,不再赘述了。转换后的数据区域行数比较多,上表中只是展示了一部分。
02
一条公式出

选中单元格区域J2:L10(实际做题时应选中完整的输出区域),输入下列公式即可。
=INDEX(A:H,(ROW(A22)/7)^{1,0,1},(MOD(ROW(A15),7)+2)^{0,1,1})
这是一条区域数组公式。小伙伴们动手来解析一下这条公式吧!
03
VBA代码
完整代码如下:
Sub 数据结构转换() Dim i As Integer, j As Integer, m As Integer Dim arr As Variant, brr As Variant arr = Range("A1").CurrentRegion ReDim brr(1 To 30, 1 To 3) For i = 2 To UBound(arr) For j = 2 To UBound(arr, 2) m = m + 1 brr(m, 1) = arr(i, 1) brr(m, 2) = arr(1, j) brr(m, 3) = arr(i, j) Next Next [W2].Resize(UBound(brr), 3) = brrEnd Sub
整段代码也很简单,通过双层循环完成。不再过多解释了,我要去找双儿去喽~~