欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路

朋友们好,这里是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

一条公式出

打工人不必追求一条公式出结果,那是高级玩儿家的秀场。此题还是VBA更加简洁易懂!

选中单元格区域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

整段代码也很简单,通过双层循环完成。不再过多解释了,我要去找双儿去喽~~