作者:绿色风
分类:
时间:2022-08-18
浏览:129
楼主 研究研究 |
Q:如何让2列数据交叉合并为一行? A:函数解决
- =OFFSET(A$2,ROW(A1)/2-1%,MOD(ROW(),2))
- =INDEX(A:B,ROW()/2+1,MOD(ROW(),2)+1)
- =OFFSET($A$1,INT((ROW(A1)-1)/2)+1,MOD(ROW(A1)-1,2))
- =INDIRECT("r"&INT((ROW(A1)-1)/2)+2&"c"&MOD(ROW(A1)-1,2)+1,)
VBA解决 非数组解决
- Range("E:E").ClearContents
- A = Range("A65536").End(xlUp).Row
- B = 2
- For X = 2 To A
- Range("E" & B) = Range("A" & X)
- Range("E" & B + 1) = Range("B" & X)
- B = B + 2
- Next X
数组解决
- Range("F:F").ClearContents
- Dim ARR, ARR1
- ARR = Range("A2:B" & Range("A65536").End(xlUp).Row)
- ReDim ARR1(1 To UBound(ARR) * 2, 0)
- B = 1
- For X = 1 To UBound(ARR)
- ARR1(B, 0) = ARR(X, 1)
- ARR1(B + 1, 0) = ARR(X, 2)
- B = B + 2
- Next X
- Range("f2:F" & UBound(ARR1) + 1) = ARR1
求教公式问题.rar |
2楼 海洋之星 |
方法真多,学习了 |
3楼 LOGO |
补充一段代码:- Sub 二列变一列()
- Dim rng As Range, i As Integer
- Set rng = Intersect([a1].CurrentRegion, [a1].CurrentRegion.Offset(1, 0))
- For i = 1 To rng.Cells.Count
- Cells(i + 1, "k").Value = rng.Cells(i)
- Next
- Set rng = Nothing
- End Sub
|
4楼 LOGO |
数组法:- Sub 二列变1列()
- Dim rng As Range, i As Integer
- Set rng = Intersect([a1].CurrentRegion, [a1].CurrentRegion.Offset(1, 0))
- ReDim arr(1 To rng.Cells.Count, 0)
- For i = 1 To UBound(arr)
- arr(i, 0) = rng.Cells(i).Value
- Next
- [l2].Resize(UBound(arr)) = arr
- Set rng = Nothing
- End Sub
|
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一