将行组转换为一行的列

我有一个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) 

复制下来。 如果重新定位源/目标范围,您应该能够适应这一点。