excel里如何把多行數據合併成一行?

類似於這個3行合併為一行!!
我要實現的是每40行合併為一行。數據大概有40000行


假如數據源全部為文本,在B1輸入公式

=PHONETIC(OFFSET($A$1,40*(ROW()-1),,40))


用VBA一個FOR循環就可以搞定
j = 1
For i = 1 To 100000
Sheets("xxx").Cells(i,2) = Sheets("xxx").Cells(i*j,1)Sheets("xxx").Cells(i*j+1,1)Sheets("xxx").Cells(i*j+2,1)
j = j + 1
next i


沒臉見人了,題乾沒看清楚,40行合併為一行。每。還是需要公式的。

有位點贊的兄台。。。羞煞我也。。。。。。


---------------------------更新的分割線------------------------------------------

各位的回答都很專業,公式用的很牛
不過,活兒趕得緊,時間少得已經來不及仔細閱讀+學習各位大神的答案的話。。。
或者有些人是 完全看不懂公式是怎麼回事兒星人 的話,

試試我這個:

  1. 複製這一列數據
  2. 打開word,粘貼
  3. 在word中,用替換功能將換行符、段落標記等等符號替換掉
  4. 複製替換後的文字
  5. 返回Excel,到你的目標單元格粘貼
  6. 點擊保存按鈕,嗯。
  7. 請叫我雷鋒。
  8. 給我點個贊。

簡單粗暴點,一列複製下來(N行),打開電腦記事本粘貼進去,再複製回EXCEL(點擊滑鼠進入單元格後再粘貼文字進去)。缺點是,一列要操作一次
###突然間搜到,就順便回答了一下,哈哈,好久之前的問題了呢


完整看了一遍答案,發現全都沒有加判斷,這樣的話,數據就算連起來了也需要另外花時間篩選出來啊。而且有些答案好像。。。。。。。。。

使用下面的公式前,記得將A列所有內容變更為文本啊,有數字就出錯了。

先將公式複製到B1單元格,然後就是下拉。

=IF(MOD(ROW(A1),40)=1, PHONETIC(OFFSET(A1,0,,40)),"")


很簡單
b1單元格內輸入如下內容
=a1a2a3

40行也是同樣的原理,只不過數據比較多。

=INDIRECT("a"ROW()*40-39)INDIRECT("a"ROW()*40-38)INDIRECT("a"ROW()*40-37)INDIRECT("a"ROW()*40-36)INDIRECT("a"ROW()*40-35)INDIRECT("a"ROW()*40-34)INDIRECT("a"ROW()*40-33)INDIRECT("a"ROW()*40-32)INDIRECT("a"ROW()*40-31)INDIRECT("a"ROW()*40-30)INDIRECT("a"ROW()*40-29)INDIRECT("a"ROW()*40-28)INDIRECT("a"ROW()*40-27)INDIRECT("a"ROW()*40-26)INDIRECT("a"ROW()*40-25)INDIRECT("a"ROW()*40-24)INDIRECT("a"ROW()*40-23)INDIRECT("a"ROW()*40-22)INDIRECT("a"ROW()*40-21)INDIRECT("a"ROW()*40-20)INDIRECT("a"ROW()*40-19)INDIRECT("a"ROW()*40-18)INDIRECT("a"ROW()*40-17)INDIRECT("a"ROW()*40-16)INDIRECT("a"ROW()*40-15)INDIRECT("a"ROW()*40-14)INDIRECT("a"ROW()*40-13)INDIRECT("a"ROW()*40-12)INDIRECT("a"ROW()*40-11)INDIRECT("a"ROW()*40-10)INDIRECT("a"ROW()*40-9)INDIRECT("a"ROW()*40-8)INDIRECT("a"ROW()*40-7)INDIRECT("a"ROW()*40-6)INDIRECT("a"ROW()*40-5)INDIRECT("a"ROW()*40-4)INDIRECT("a"ROW()*40-3)INDIRECT("a"ROW()*40-2)INDIRECT("a"ROW()*40-1)INDIRECT("a"ROW()*40)


前提:如果是兩行,為其中的一行加入固定的字元串或者數字,

則可以試試這個辦法:

1、打開excel表格,在其中一個單元格中輸入要加入的內容。

2、在現有單元格後方,輸入:=A1$C$1 即可

3、下拉

taps:此時新生成的行依賴於原來的前後兩行,也就是說,不能刪除 A和C行

這時候可以把新生成的這行複製加在C後面,保存然後再刪除A B C三行。


Sub 多行合併()

Dim rowNumber As Integer
Dim cycNumber As Integer

rowNumber = 40000 "數據行數(數值太大的話可能越界)
cycNumber = 40 "需合併的行數

"數據處理(將原始數據按每40行收成1行排列)
For i = 1 To rowNumber Step cycNumber
For j = 1 To cycNumber
ActiveSheet.Cells(i / cycNumber + 1, j) = ActiveSheet.Cells(i + j - 1, 1)
Next j

"排版
For k = 2 To cycNumber
ActiveSheet.Cells(i / cycNumber + 1, 1) = ActiveSheet.Cells(i / cycNumber + 1, 1) ActiveSheet.Cells(i / cycNumber + 1, k) "每行的多列合併成一列
ActiveSheet.Cells(i / cycNumber + 1, k).ClearContents "清除合併後的冗餘數據
Next k

Next i

End Sub


謝謝@陳錫盧的提示,我在翻找公式時找到了類似的函數:

=TEXTJOIN(",",,OFFSET($E$1,40*(ROW()-1),,40))

這樣就能把多行合併成一行,且指定分隔符。

TEXTJOIN 函數 - Office 支持


其實也可以使用連環嵌套函數,如圖


如果數據有標題,每40個合成一個,可以在B2格輸入=A2,在B3格輸入=B2A3。然後把B3格的公式往下一直拖到B41格。
選擇B2:B41,然後滑鼠移到區域右下角,當滑鼠變為實心十字時雙擊。
在C41格輸入一個字元1,選擇C2:C41,然後滑鼠移到區域右下角,當滑鼠變為實心十字時雙擊。
篩選C列非空。


補充一種情況,當同一列3行數據一樣,我們想合併成一個數據顯示,但又不能影響每個單元格數據的使用?
1.選中空白的三行一列單元格,合併居中
2.點擊格式刷
3.選中要合併的三行一列數據
大功告成!


推薦閱讀:

怎樣對數據進行分析,選擇並做出最能展現問題的圖表?

TAG:Excel公式 | MicrosoftExcel2007 | Excel使用 | Excel圖表繪製 |