Excel中VBA實現按照第二行標籤將一行多列變成多行多列?

2025-02-10 01:10:22 字數 1854 閱讀 6858

1樓:陽光上的橋

公式可以解決本問題,為什麼要用vba呢,實際資料是否比這個複雜得多。

l2公式:index(a:a,rounddown((row()+7)/3,0))

m2公式:index(,mod(row(a1)-1,3)+1)<>

n2公式:vlookup($l2,$a:$j,lookup(1,0/($b$1:

j$1=$m2)/(b$2:$j$2=n$1),column($b$1:$j$1)),0)

右拉、下拉:

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中將一列分成多列多行的操作技巧,同事分分鐘完成了

3樓:環球青藤

在日常工作中,往往會碰到這種情況(如下圖):只有一列資料,而且比較多,如果列印起來就浪費紙張,然後複製、貼上把**變成幾列,方便列印。今天和大家分享不用複製、貼上,就能快速完成一列分成幾列幾行的方法。

方法一:通過單元格引用實現一列變多行多列。

1、在c1單元格輸入:a1,向右拖動複製到g1單元格;

2、在c2單元格輸入:a6,向右拖動複製到g2單元格;

3、選中c1:g2單元格區域,向下拖動複製到6行;

4、選中c1:頃鍵g6單元格區域,按ctrl+h鍵,查詢內容輸入:a,替換為輸入:=a,點選【全部替換】按鈕,最後【關閉】視窗即可完成分行分列。

演示如下圖:

方法二:利用函式實現一列變成多行多列。

1、在c1單元格輸啟乎團入公式:=offset($a$1,mod(column(a1)+4,5)+row(a1)*5-5,),向右拖動複製公式到g1單元格;

2、選中c1:g1單元格區域,向下拖動複製公式到6行,即可完成分行分列。

演示如悄橘下圖:

希望以上內容對你的工作有實質性的幫助,

EXCEL如何用公式或VBA實現自動算出可用庫存

如下,詳見附件 private sub commandbutton1 click for i 2 to a65536 end 3 row if cells i,1 cells i 1,1 then cells i,5 cells i 1,6 if cells i,5 0 then cells i,5...

請問如何用VBA將EXCEL檔案中的資料複製到別EXCEL檔案相同的位置

sheet1的區域a1 c3拷貝到sheet2的區域a1 c3 sheet1.range a1 c3 copy sheet2.range a1 c3 sub aaa dim sh1 as worksheet dim sh2 as worksheet set sh1 workbooks 1.xls s...

請VBA高手幫忙,我要在EXCEL中插入控制元件,每次只要點選這個控制元件就能實現下面的功能

option base 1 sub sort dim r as integer dim j as integer dim k as integer dim tnum as string r b65536 end xlup row set d createobject scripting.dictio...