實現(xiàn)動態(tài)裝箱計算! wps中ddb+text函數(shù)公式的使用技巧
粉絲求助SOS:如何實現(xiàn)動態(tài)[裝箱]計算?將不同型號的產(chǎn)品按50個一箱進行分裝。
如下圖所示:
- A列是型號:A、B、C、D
- B列是數(shù)量:39、72、117、21
裝箱要求是:
每個型號50個裝一箱,不能混裝。多出50個的部分需要裝在下一箱中,以此類推。最終結(jié)果顯示在在D1:E8區(qū)域。
下面顯示了每個箱子的明細:
- A型號:1箱39個
- B型號:1箱50個和1箱22個
- C型號:2箱各50個和1箱17個
- D型號:1箱21個

這個問題差點讓我崩潰:ddb+text函數(shù)組合,雙劍合璧,實現(xiàn)動態(tài)[裝箱]計算。
第一步:生成可能箱子序列
可以這樣寫公式:
=COLUMN(A:D)
COLUMN(A:D) 返回列號數(shù)組 {1,2,3,4}(A列=1, D列=4)

繼續(xù)完善公式:
=COLUMN(A:D)*50
乘以50后得到:{50,100,150,200}。這代表可能的累積裝箱點(每50個一箱),最多4箱(200個),覆蓋了最大數(shù)量117的需求。

第二步:巧用DDB函數(shù)計算各箱數(shù)量
我們繼續(xù)完善公式:
=DDB(COLUMN(A:D)*50,B2:B5,1,1)
這里使用了DDB折舊函數(shù),但被巧妙轉(zhuǎn)化為了裝箱計算。計算每個型號在每箱的“剩余量”。
DDB參數(shù)解析:
- cost: {50,100,150,200}(每個可能箱子的累積值)
- salvage: B2:B5,即 {39;72;117;21}(每個型號的總數(shù)量)
- life: 1(表示資產(chǎn)壽命只有1期)
- period: 1(計算第1期的折舊)
- factor: 省略(默認為2)
DDB函數(shù)在life=1時的運算原理:
當(dāng)life=1時,DDB直接返回 cost - salvage(如果cost > salvage),否則返回0(因為折舊不能為負)。
實際計算過程舉例:
型號A(salvage=39):
- cost=50:DDB=50-39=11
- cost=100:DDB=100-39=61
型號B(salvage=72):
- cost=50:50<72,DDB=0
- cost=100:100-72=28

繼續(xù)完善公式:
=50-DDB(COLUMN(A:D)*50,B2:B5,1,1)
這部分計算每個箱子的實際數(shù)量。
運算過程舉例:
- 型號A,cost=50:50 - 11 = 39(第一個箱子數(shù)量)
- 型號A,cost=100:50 - 61 = -11(無效,后續(xù)會處理)
- 型號B,cost=50:50 - 0 = 50(第一個滿箱)
- 型號B,cost=100:50 - 28 = 22(第二個箱子剩余)

繼續(xù)完善公式:
=0&50-DDB(COLUMN(A:D)*50,B2:B5,1,1)
用文本連接符 & 處理:
例如:50-DDB=39→0&39="039"(文本)
負數(shù)如:-11→0&-11="0-11"(文本,后續(xù)會轉(zhuǎn)換為錯誤值)

繼續(xù)完善公式:
=--(0&50-DDB(COLUMN(A:D)*50,B2:B5,1,1))
- --:作用是將文本轉(zhuǎn)為數(shù)字
- "039"→39(有效)
- "0-11"→錯誤值(#VALUE!,因為不是合法數(shù)字)
目的:
確保數(shù)字以三位形式出現(xiàn)(如39→039),但實際轉(zhuǎn)換后仍是數(shù)字39。負數(shù)產(chǎn)生的錯誤將會在后續(xù)步驟中被過濾。

第三步:文本處理:構(gòu)建"型號;;數(shù)量"字符串,確保數(shù)字格式。
我們輸入公式:
="\"&A2:A5&";;"&--(0&50-DDB(COLUMN(A:D)*50,B2:B5,1,1))
- 構(gòu)建型號字符串:"\"&A2:A5&";;"
"\"表示雙引號字符,Excel中轉(zhuǎn)義寫法。
- 例如型號A:"\"&"A"&";;" → "A;;"(字符串內(nèi)容為雙引號+A+兩個分號)。
- 與數(shù)量連接:"A;;" & 39 → "A;;39"(表示型號A和數(shù)量39的組合)。
分隔符 ;; 用于后續(xù)TEXT函數(shù)拆分數(shù)據(jù)。

第四步:降維過濾
我們外面嵌套TOCOL函數(shù):
=TOCOL("\"&A2:A5&";;"&--(0&50-DDB(COLUMN(A:D)*50,B2:B5,1,1)),3)
使用TOCOL轉(zhuǎn)換和過濾,TOCOL將數(shù)組矩陣轉(zhuǎn)為單列,忽略無效項。將上述生成的4行×4列矩陣轉(zhuǎn)換為單列,并忽略空值和錯誤(第2參數(shù)設(shè)置為3)。
轉(zhuǎn)換過程:
- 有效值(如A;;39、B;;50)保留。
- 錯誤值(如負數(shù)轉(zhuǎn)換結(jié)果)被跳過。
結(jié)果按行掃描:先處理型號A所有箱子,再B、C、D。

第五步:拆分輸出
最外面嵌套TEXT函數(shù):
=TEXT({1,0},TOCOL("\"&A2:A5&";;"&--(0&50-DDB(COLUMN(A:D)*50,B2:B5,1,1)),3))
用 TEXT 分割型號和數(shù)量,TEXT按分隔符;;分割為兩列。
{1,0}表示提取第1部分(型號)和第0部分(數(shù)量)。
比如 "A;;39":
- {1}提取 ;; 前的部分 → "A"
- {0}提取 ;; 后的部分 → "39"
最終輸出兩列:D列為型號,E列為數(shù)量。

TEXT({1,0}, ...) 固定結(jié)構(gòu):
不是真正的文本格式化函數(shù),而是被用來按分隔符拆分字符串的巧妙技巧。就像用剪刀沿著縫線剪開布料,;; 是縫線,{1,0} 是指揮剪刀裁剪的位置指令。
推薦閱讀:lookup加座啥意思? wps中l(wèi)ookup+sumifs搞定有合并單元格的多條件求和
相關(guān)文章

分享一個超神奇的公式! wps表格中對混合內(nèi)容中的分數(shù)求和的技巧
wps表格中有很多內(nèi)容,想要單獨對分數(shù)數(shù)據(jù)進行求和,方法很多,今天我們用“=”+regexp+evaluate+sum這個公式對混合內(nèi)容的分數(shù)求和,詳細如下2025-07-22
無需配置點擊即用! WPS免費接入DeepSeek上傳表格一鍵生成PPT等功能全都
WPS已接入DeepSeek,無需配置,無需等待,點擊即用,和“服務(wù)器繁忙”說再見,下面我們就來看看詳細教程2025-07-22
根據(jù)簡稱查詢?nèi)Q太香了! wps中regexp+vlookup公式使用技巧
wps表格中數(shù)據(jù)需要做一個對稱,想要實現(xiàn)將數(shù)據(jù)中的簡稱和全稱對應(yīng)起來,該怎么操作呢?下面我們就來看看詳細教程2025-07-22
wps怎么帶括號求和? regexp+sum這個厲害的求和公式請收藏
最近一直在研究REGEXP函數(shù),發(fā)現(xiàn)比想象中的更強大,過去一大堆案例都可以通過這個數(shù)解決,比如今天這個案例,需求很簡單,需要將括號內(nèi)的數(shù)字進行求和運算,我們該如何實現(xiàn)2025-07-22
lookup加座啥意思? wps中l(wèi)ookup+sumifs搞定有合并單元格的多條件求和
在Excel表格中,如何根據(jù)合并單元格來進行數(shù)據(jù)的查詢?想要實現(xiàn)這樣的操作,最簡單的方法就是利用LOOKUP函數(shù)2025-07-22
從此以后寫公式又有一種新路子! wps中用Let函數(shù)玩變量的技巧
wps中Let函數(shù)給計算結(jié)果分配名稱,就像編程里的變量一樣,它讓你的公式更清晰,減少冗余,下面我們就來看看用Let函數(shù)玩變量的技巧2025-07-22
提取任意行列數(shù)據(jù)太好用了! wps中chooserows與choosecols函數(shù)使用技巧
CHOOSECOLS CHOOSEROWS這兩個函數(shù)屬于同一類函數(shù),函數(shù)的目標(biāo)很明確,就是返回一組數(shù)據(jù)中,指定的行或列,類似OFFSET中返回指定區(qū)域,下面我們就來看看使用技巧2025-07-15
wps星期排序怎么弄? WPS利用AI編寫代碼對行內(nèi)星期正向排序的技巧
電腦使用表格時,發(fā)現(xiàn)單元格的日期順序是錯的,想要按照周幾進行排序,那么表格怎么根據(jù)星期幾排序日期,為此本篇介紹以下方法2025-07-12
wps如何生成隨機順序? WPS利用AI編寫代碼對行內(nèi)隨機排列的技巧
wps中的數(shù)據(jù)系那個喲隨機排列,該怎么對數(shù)據(jù)進行隨機排序呢?雖然方法很多,今天我們使用ai對數(shù)據(jù)進行隨機排序2025-07-12
wps如何跳過空行填充連續(xù)序列號? wps Excel跳過空行填充序號的技巧
當(dāng)序號填充遇到空行時,你能跨過去嗎?我們給表格填充序號時通常使用序列填充,但當(dāng)表格中有空行時該怎樣填充呢?下面我們就來看看詳細教程2025-07-09




