用VBA將一列資料轉置成多行多列?

2025-02-18 06:15:17 字數 1397 閱讀 8074

1樓:陽光上的橋

程式**如下圖:

操作示例如下圖:

程式文字:option explicit

sub 轉置()

dim arr1, arr2, r1 as range, r2 as range, i&, j&, k&

arr1 = r1

i = ubound(arr1)

j =redim arr2(1 to / j, 0), 1 to j)k = 1for i = 1 to ubound(arr2)for j = 1 to ubound(arr2, 2)if k <=ubound(arr1) then arr2(i, j) =arr1(k, 1)

k = k + 1

next j

next i

ubound(arr2, 2)) arr2end sub

excel vba多行轉一列,煩請大佬看下**問題?

2樓:網友

答案更新】你只需要在**中設定好兩個常量。

的值,即可。

程式只遍歷資料的行,避免了遍歷所有資料的元素。

這樣比較節清拍省時間,特別是資料較多時,尤為明顯。

sub 資料轉置()

rem 下面是蠢謹宣告兩個常量。

const rg1$ =c2" '請用文字表示原資料第1個單元格的名稱】

const rg2$ =b2" '請用文字表示轉置後第1個單元格的名稱】

rem 下面宣告變數並處理資料。

if range(rg1) =then exit sub '如果rg1格是空的則退出程式。

dim ic%, ir&, i&, irow&, arr

irow = range(rg2).row '賦值給irow乙個初始值。

ic = cells(range(rg1).row, '獲取rg1所在行中已使用的最大列號。

ir = cells(, range(rg1).column).end(3).row '獲取rg1所在列中已使用的最大行號。

for i = range(rg1).row to ir '遍歷資料的行。

arr = , range(rg1).column).resize(1, ic - range(rg1).column + 1)) 將該行轉置並賦值給陣列。

cells(irow, range(rg2).column).resize(ubound(arr), 1) =arr '輸出陣列資料到rg2所在的列中。

irow = cells(, range(rg2).column).end(3).row + 1 '重新賦值,獲取rg2所在列中已使帶正基用的最大行號+1

next i

msgbox "轉置完畢", 64 '彈出提示資訊對話方塊。

end sub

excel中用VBA提出一列資料中含有0369數字的單元格

sub aa dim m 記錄相同數 dim ro as integer 記錄符合結果數字所在行k activesheet.range c1 c65536 end xldown row ro k for i k to 1 step 1m 0 for j 1 to len cells i,3 a mi...

將excel中的一列資料按照對應另一列的條件篩選顯示為多列

不行吧?我也沒試過 excel 如何按照一列資料內容在另一列中查詢對應內容 使用vlookup函式處理 excel版本參考 2010 模擬資料 a1 b5,查詢測試對應的資料 1 e1輸入公式 vlookup d1,a b,2,0 2 回車,檢視效果 d1輸入 vlookup a1,b 1 c 10...

VBA如何將滿足條件的內容複製到另一列,求懂程式設計的大神幫幫忙!!跪求

滿足你要求的vba 如下 option explicit sub ygb dim i,j,x1,x2,i2,nx1 cells 3,n x2 cells 4,n i2 2 下一個儲存結果的行 for i 4 to cells 65536,k end xlup row if cells i 2,k x...