久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Excel VBA 7.22 報(bào)表橫向合并,,橫列數(shù)據(jù)都不全,!怎么辦?

 Excel和VBA 2021-03-31

一起學(xué)習(xí),,一起進(jìn)步~~

昨天我們大致的講述了下數(shù)據(jù)橫向合并的普通操作,,相信小伙伴們并不滿足于這樣簡(jiǎn)單的數(shù)據(jù)合并吧,畢竟日常工作中怎么會(huì)有這么簡(jiǎn)單的數(shù)據(jù)合并呢?

日常中我們常見的數(shù)據(jù)合并應(yīng)該是這樣的 

有一個(gè)表的數(shù)據(jù)是完全的,,但是其他的表的數(shù)據(jù)則是不完整的,,這樣的數(shù)據(jù)表要如何匯總合并呢?

代碼區(qū)

Sub twotwo()Dim nsth As Worksheet, arr()Worksheets.Add after:=Worksheets(Worksheets.Count)Set nsth = ActiveSheetnsth.Name = "橫向匯總(2)"For Each sth In Worksheets If sth.Name <> nsth.Name Then k = k + 1 If k = 1 Then l = sth.Cells(1, Columns.Count).End(xlToLeft).Column counts = Worksheets.Count ReDim Preserve arr(1 To sth.Cells(Rows.Count, 1).End(xlUp).Row, 1 To l) For i = 1 To sth.Cells(Rows.Count, 1).End(xlUp).Row For j1 = 1 To l arr(i, j1) = sth.Cells(i, j1) Next j1 Next i Else arrt = sth.UsedRange l = sth.Cells(1, Columns.Count).End(xlToLeft).Column ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + l - 1) For i = 1 To UBound(arr) On Error Resume Next num = WorksheetFunction.Match(arr(i, 1), WorksheetFunction.Transpose(WorksheetFunction.Index(arrt, 0, 1)), 0) If Err.Number = 0 Then For j = 2 To l arr(i, UBound(arr, 2) + j - l) = sth.Cells(num, j) Next j End If Next i End If End IfNext sthnsth.Cells(1, 1).Resize(UBound(arr), UBound(arr, 2)) = arrEnd Sub

整體來說并不算太難,,大家要理解這個(gè)思路,,來看看效果

需要的數(shù)據(jù)都全部匯總了,并且相應(yīng)的字段應(yīng)該缺少的數(shù)據(jù),,也補(bǔ)充完整了,。 

代碼分析

首先我們通過遍歷循環(huán)的方式得了一個(gè)數(shù)組,這個(gè)數(shù)組中的數(shù)據(jù)就是第一個(gè)表格中的數(shù)據(jù),。

然后繼續(xù)進(jìn)入循環(huán)進(jìn)入下一個(gè)工作表中,,從這里開始就需要進(jìn)行判斷了,。 

首先同當(dāng)前表格的使用區(qū)域復(fù)制給數(shù)組arrt,,然后對(duì)數(shù)組進(jìn)行重新重組

ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + l - 1)

這里大家可能比較難理解,,UBound(arr, 2)代表了二維數(shù)組的最大下標(biāo),,就是列數(shù),L代表了當(dāng)前工作表的最大行數(shù),,因?yàn)榈谝涣惺菂⒖剂?,不算在其中,所?1

然后就是遍歷循環(huán)的方式了,, 每找到一個(gè)參考列數(shù)據(jù)的位置,, 就復(fù)制給數(shù)組中對(duì)應(yīng)的數(shù)組的位置,這個(gè)位置如何得到呢,?

arr(i, UBound(arr, 2) + j - l) = sth.Cells(num, j)

最大下標(biāo),,數(shù)據(jù)所在行這幾個(gè)參數(shù)之間的關(guān)系,大家可以通過調(diào)試的方式,,更好理解一些,。


好了~明晚20:00,準(zhǔn)時(shí)再見,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多