将行组转换为一行的列
我有一个Excel电子表格,以两列格式重复这样的行:
ID 123 名称xyx 位置dfff 自定义sdfd ID 124 名字xyeeex 位置dfeeff 自定义sdfdee
我的数据是一致的。 每个数据部分包含4行,后跟1个空行。 我最终在VB中写了一个macros来完成这个任务,但是我想知道是否有更多的内置方法
我想得到:
ID名称位置自定义 123 ... 124 ...
所以每一组行都需要进入一行。 即使我可以部分进入某个单独的行格式,我也可以应用更多的公式来达到我想要的效果。但真正的问题是如何将一组重复的行组合成一行。
使用这个一般答案的方法1, 如何在只使用公式的情况下在行,列和matrix范围之间进行转换 ,假设你的数据在A1
开始(使用列A:B
),并且你的目标范围是D:G
列,
=INDEX($B$1:$B$100,(ROW()-ROW($D$2))*5+(COLUMN()-COLUMN($D$2)+1),1)
要么
=OFFSET($B$1,(ROW()-ROW($D$2))*5+(COLUMN()-COLUMN($D$2)),0)
向下复制并向左。
除了有人为你写代码之外,最简单的方法可能是将你的右列拷贝到四列中,从第一个副本中删除顶部单元格(向上移动),从第二个副本中删除顶部两个单元格,等等。 然后过滤左列,select并删除显示ID
以外的所有行。 在顶部插入一行,并用Paste Special Transpose将一组行标签复制到右侧列上方的单元格中。 然后删除你的第一列。
虽然既不使用代码也不使用公式,但对于大数据集合,对于适度的重复来说,这是可行的。
或者,将RH栏作为无格式文本复制到Word中,用单选replace配对的双头( ^p^p
和^p
),转换为4列表并复制回Excel。
我已经在这里回答了类似的问题 。
假设您的数据以A1
开头(使用列A:B
),并且您的目标范围是列D:G
,请input
D2: =INDEX($B$1:$B$100,ROW()*5-9,1) E2: =INDEX($B$1:$B$100,ROW()*5-8,1) F2: =INDEX($B$1:$B$100,ROW()*5-7,1) G2: =INDEX($B$1:$B$100,ROW()*5-6,1)
复制下来。 如果重新定位源/目标范围,您应该能够适应这一点。