歡迎轉(zhuǎn)發(fā)和點(diǎn)一下“在看”,文末留言互動(dòng)! 置頂公眾號(hào)或設(shè)為星標(biāo)及時(shí)接收更新不迷路 小伙伴們好,今天來(lái)和大家聊一聊跨表求和的問(wèn)題。通常講,跨表求和需要用到INDIRECT函數(shù),而且對(duì)源數(shù)據(jù)有一定的格式要求。否則公式書(shū)寫(xiě)過(guò)程將非常痛苦。 但是在VBA環(huán)境下,跨表求和則要簡(jiǎn)單得多。今天就是這樣的一個(gè)例子。 在不同的工作表中存放著物料數(shù)據(jù)。部分工作表以“倉(cāng)庫(kù)”命名并編號(hào)。現(xiàn)在需要我們按照倉(cāng)庫(kù)來(lái)計(jì)算某種物料的總數(shù)量。名稱中不包含“倉(cāng)庫(kù)”的則不參與計(jì)算。 這是一個(gè)遍歷的過(guò)程。 01 跨表求和就是一個(gè)遍歷過(guò)程 完整代碼如下: Sub 跨工作表統(tǒng)計(jì)求和() Dim Mname As String, total As Integer, mysht As Worksheet, i As Integer total = 0 Mname = InputBox("請(qǐng)輸入需要統(tǒng)計(jì)的物料") If Mname = "" Then MsgBox ("不能輸入空值"): Exit Sub For Each mysht In Worksheets If Left(mysht.Name, 2) = "倉(cāng)庫(kù)" Then i = 2 Do While mysht.Cells(i, 1) <> "" If mysht.Cells(i, 1) = Mname Then total = total + mysht.Cells(i, 2) End If i = i + 1 Loop End If Next Sheet1.[A1] = "物料" Sheet1.[B1] = "總數(shù)量" Sheet1.[A2] = Mname Sheet1.[B2] = totalEnd Sub 整個(gè)代碼的邏輯思路比較簡(jiǎn)單,遍歷工作表及每個(gè)工作表的數(shù)據(jù)區(qū)域。 Mname = InputBox("請(qǐng)輸入需要統(tǒng)計(jì)的物料")If Mname = "" Then MsgBox ("不能輸入空值"): Exit Sub 利用InputBox對(duì)話框來(lái)對(duì)變量Mname賦值。若未輸入則提示“不能輸入空值”并退出。 For Each mysht In Worksheets If Left(mysht.Name, 2) = "倉(cāng)庫(kù)" Then i = 2 Do While mysht.Cells(i, 1) <> "" If mysht.Cells(i, 1) = Mname Then total = total + mysht.Cells(i, 2) End If i = i + 1 Loop End IfNext 循環(huán)過(guò)程。外側(cè)循環(huán)遍歷工作表。若工作表名稱中含有“倉(cāng)庫(kù)”二字,則內(nèi)側(cè)循環(huán),遍歷工作表數(shù)據(jù)區(qū)域,判斷物料名稱。符合判斷者對(duì)數(shù)量進(jìn)行累加。 |
|
來(lái)自: EXCEL應(yīng)用之家 > 《待分類》