2007 excel如何把每隔两行横着的数据转换成竖的

就是把这幅图中左边那块转换成右边的
急急急,在线等!求大神帮帮忙!小女子感激不尽!!

第1个回答  推荐于2016-08-02
I1单元格输入:
=OFFSET($A$1,MOD(ROW(A1)-1,2)+(COLUMN(A1)-1)*4,INT((ROW(A1)-1)/2))
右拉,下拉公式追问

谢谢大哥!!!我明天开电脑试试行不行!!!!

追答

呵呵,我试过的,只要你会拖拉公式就可以的!
没仔细看,中间还有一个空行,用这个
=OFFSET($A$1,MOD(ROW(A1)-1,3)+(COLUMN(A1)-1)*4,INT((ROW(A1)-1)/2))
空行会为0
=OFFSET($A$1,MOD(ROW(A1)-1,3)+(COLUMN(A1)-1)*4,INT((ROW(A1)-1)/2))&""
数据会成文本
=IF(OFFSET($A$1,MOD(ROW(A1)-1,3)+(COLUMN(A1)-1)*4,INT((ROW(A1)-1)/2))="","",OFFSET($A$1,MOD(ROW(A1)-1,3)+(COLUMN(A1)-1)*4,INT((ROW(A1)-1)/2)))
这个很好,可是,公式有点长
选一个吧。

追问

大神!可以加你企鹅吗!我的问题其实比较复杂,这个是举了个简单的例子而已。。拜托了T__T

追答

可以,看 我 资 料,里面有。

本回答被提问者采纳
第2个回答  2015-07-22
我可以帮你写一个过程,只是悬赏值太少啦~追问

我只有那么多了。。。我也想悬赏多些。。可是我是新手。。。T__T求大神帮忙

追答

Alt+F11打开VBA编辑器,在下图中位置点右键“插入模块”

在右侧代码编辑区域粘贴代码:

粘贴好后按F5运行。

程序定义为:原数据在工作簿左起第1张工作表,结果放在第2张工作表。

Sub t()

  With Worksheets(1)

    For i = 1 To .UsedRange.Columns.Count

      For j = 1 To 3

        .Range(Chr(64 + i) & j * 3 - 2 & ":" & Chr(64 + i) & j * 3).Copy Worksheets(2).Range(Chr(64 + j) & i * 3 - 2)

      Next

    Next

  End With

End Sub

 已测试,结果与您发的图完全一致。

如果有帮助,请采纳哟~

追问

大神!!!我这个举例其实举得有点不妥.....因为我实际上是有3行空格,请问修改代码中的哪个位置呢?

这个是我实际要做的......一共有24~34组数据,每组有六列,有18个这样的表格...............

追答

先把一个表的处理过程写出来,然后剩下的工作就是遍历工作表了。
把上面代码中的*3改为*5,把 - 2 改为 - 4 。试试吧。

相似回答