EXCEL---如何把多行(N列)数据 合并为1行(N列)---公式和VBA,甚至有的插件能做

方法1 公式

第1行,辅助行,模拟了每个数据cell对应的列号

第2行,辅助行,模拟了每个数据cell对应的行号

第3行,输出行 ,利用R1C1G格式,因为明显可以看出来,行号,列号的变化时有规律的   

                          = INDIRECT("r"&G2+2&"c"&G1,FALSE)

                           G1 列号

                           G2 行号,G2+2 是因为原始待处理raw数据是从第3行开始的

    序号123412341234 
     111122223333 
101001000 1110100100021110110013121021002 
111011001 2             
121021002 3             
131031003 4             
141041004 5             
151051005 6             
161061006 7             
171071007 8             
181081008 9             
191091009 10             
201101010 11             
211111011 12             
221121012 13             
231131013 14             

 

   公式的思路

      思考原型1: INDIRECT("r"&row(2:2)&"c"&column(a:a),FALSE),这个可以查一个数,但这个里参数都是写死的

      思考原型2:  如何让 row(2:2)  column(a:a) 变成可变得数?

                           思路1:循环,那就用VBA

                            思路2:模拟假的行号,列号

                          

12341234
11112222

      原型3:        INDIRECT("r"&G2+2&"c"&G1,FALSE)

 

 

 

 

方法2 VBA

犯错原因

  1. 要理解 i,j 是针对老的raw的 二维数据处理的参数
  2. 新的输出列,其循环量应该是个新的变量K
  3. 变量K的初值,需要赋值在循环外,不然会被循环反复重置
  4. k=k+1的增量循环体,放在 循环i内,循环j内,效果完全不同

 

Sub cycle1()
Dim k
k = 5

For i = 4 To 17 Step 1
    For j = 1 To 3 Step 1
        Sheets("sheet3").Cells(1, k) = Cells(i, j)
    k = k + 1
    Next j
Next i


End Sub




'错误代码例子,我新手非常容易犯的直觉错误,对cycle 不熟,不理解

'Sub cycle1()
'
'For i = 4 To 17 Step 1
'    For j = 1 To 3 Step 1
'        Sheets("sheet3").Cells(1, j + 5) = Cells(i, j)
'    j = j + 1
'    Next j
'Next i
'
'End Sub

 

方法3

有人说可以用方方格子,好像是个EXCEL插件,没用过,可以试试

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值