Excel函式如何根據某列內容將另一列相關聯的多行資料轉成一行多列形式(VBA做也行,含問題檔案鏈)?

時間 2021-08-12 20:42:15

1樓:

Option

Explicit

Subtest

()Dim

dict

AsObject

Setdict

=CreateObject

("Scripting.dictionary"

)Dim

RowCount,i

,j,Arr

(),FamilyNo

,Brr,ub

,ubm

RowCount

=Sheets

("源資料"

).UsedRange

.Rows

.Count-1

Arr=

Sheets

("源資料"

).Range

(Sheets

("源資料"

).Cells(2

,1),Sheets

("源資料"

).Cells

(RowCount+1

,10)).Value

Fori=1

ToRowCount

FamilyNo

=Arr(i

,3)If

dict

.Exists

(FamilyNo

)Then

Brr=

dict

(FamilyNo)ub

=UBound

(Brr)If

ubm>=ub+

4Then

Else

ubm=ub+

4End

IfReDim

Preserve

Brr(1To

ub+4)

Forj=1

To4Brr(ub+

j)=Arr(i

,j+6

)Next

dict

(FamilyNo)=

BrrElse

ReDim

Brr(1To

10)Forj=1

To10

Brr(j)

=Arr(i

,j)'

Next

dict

.Add

FamilyNo

,Brr

EndIf

Next

Dimcrr

,drr

crr=

dict

.Items

()ReDim

drr(0To

UBound

(crr)-

LBound

(crr)+

1,1To

ubm)

drr(0,

1)="村"

drr(0,

2)="組別"

drr(0,

3)="戶號"

drr(0,

4)="人口"

drr(0,

5)="戶主"

drr(0,

6)="戶主身份證"

Forj=7

Toubm

Step4On

Error

Resume

Next

drr(0,

j)="成員"

&Int((j

-3)/

4)drr(0,

j+1)

="成員身份證"

&Int((j

-3)/

4)drr(0,

j+2)

="關係"

drr(0,

j+3)

="性別"

OnError

GoTo

0Next

Fori=1

ToUBound

(drr

)Forj=

1ToubmOn

Error

Resume

Next

drr(i,

j)=crr(i

)(j)On

Error

GoTo

0Next

Next

Sheets

("需要的結果資料"

).Range

("A1"

).Resize

(UBound

(drr)+

1,ubm)

=drr

EndSub

2樓:啃烤紅薯

有個半手工方法,新增乙個輔助列,對戶主排序,得到戶主甲1、 戶主甲2...,分別對應相對的戶成員。

然後在結果表分別預設戶成員1、 戶成員2...,根據情況設定滿足最多個成員的數量, 然後做個資料透視表,把所有的戶主粘過去,再根據列名去匹配就好了。

3樓:

大致看了下,給你說說vba大概的流程

counta 獲取不為空的行數。

max人口列,獲取最大的人口數量(用於生成結果列表表頭)根據你的格式需求生成表頭

迴圈所有的戶號,獲取所有成員資訊

判斷成員是否戶主

根據判斷結果來決定成員資訊填寫到哪一列

填充其他位址等資訊完工

如何設定Excel函式使其根據上下班時間自動統計出上班時長 加班時長?

按照題主的意思和需求,不考慮特別複雜情況 跨日期下班 用公式解決。D列星期通過weekday獲取日期的星期序數,用來判定是星期幾。兩層if巢狀,先判斷是否是工作日還是週末,週末則上班時間判0,加班時間直接計算。工作日則上班時間等於下班減上班,再判斷下班時間是否早於指定時間,若不早於則再減去加班時間,...

excel中如何根據一列關鍵字自動補充其他列

沐雨 先把這些對應關係放到一張小表裡,然後在正式表裡用VLOOKUP函式,把對應關係引用過來即可。假定第一列為學號,第二列為姓名,根據第一列輸入的內容自動填充第二列的方法 首先在另一工作表sheet2中先建立學號與姓名對照表,資料分別在A列和B列。然後在本工作表第二列設定好公式,當在第一列輸入內容且...

excel內容如何反轉?

選中你要翻轉的內容,複製,右鍵,選擇性貼上,下面有個轉置,前面打鉤,確定,就行了 Excel入門 http www. 被困擾過好久,excel用陣列公式組合大量文字似乎不可行,所以你要反轉的是文字的話,除非用vba,否則應該是沒有什麼辦法的,如果是純數字可以直接用陣列公式來做。示例如下 把想要反轉的...