今天拿到了最新版本的WPS,其中乙個更新的函式let是顧老師一直期待的乙個新函式,這個函式最大的好處是,當你需要多次引用的時候,可以使用let函式來定義對應的名稱,這樣公式的長度就大大簡化了。
結合乙個要求來說明let函式的使用,有一組資料,乙個合約對應多個程序,每個程序都有對應的數量,現在需要換算成表2中的顯示方法:
與同一合約對應的操作被合併到乙個單元中。
將相對運算的數量相加並求和。
資料如下圖 1 所示
圖 1 顯示了這些要求,直接響應是將 1D 報告轉換為 2D 報告並連線的要求。
乙個合約對應多個程序,可以使用 filter 函式進行過濾。
過濾後的結果通過多條件求和函式求和。
總和的結果由文字連線符號連線;
將多維資料轉換為一行資料,並使用連線函式將其連線到單元格
模擬結果如下圖2所示
圖 2 需要將表 1 轉換為表 2,第一步是對錶 1 中的合約資料進行去重處理。
輸入函式:unique(b3:b10)。
效果如下圖3所示
圖3 有了合同編號後,可以使用篩選功能和去重功能過濾掉合同對應的流程。
輸入函式:unique(filter(d3:d10,b3:b10=f3))。
功能說明:篩選合約編號等於F3的合約的流程,然後通過unique刪除對應的重複項。
效果如下圖4所示
圖4使用過濾函式獲取合約對應流程的唯一值,然後可以使用多條件求和函式對合約對應的工序數求和。
輸入函式:sumifs(c:c,b:b,f3,d:d,g3
函式解釋:這是兩個條件的總和,需要滿足“約定和流程”的條件,總和面積為c列的數量
效果如下圖5所示
圖5 為了以後合併到同乙個單元格中,需要對不同的流程和彙總數量進行分割槽效應,這裡通過使用文字連線符號來解決這個問題。
錄入功能:":("&sumifs(c:c,b:b,f3,d:d,g3#
功能定義:“通過文字連線符號”>“多次連線分割槽符號(左括號、右括號、逗號)
效果如下圖6所示
圖 6 基本上完成了上述步驟,剩下的就是合併轉置。
將兩個區域連線在一起:
hstack(g3#,h3#
轉置:torow(i3
重新合併:concat(torow(hstack(g3,h3
完成的效果如下圖7所示:
圖 7 通過輔助列方法逐步寫出結果,現在輪到 let 定義第乙個結果了:
名稱:公式:unique(filter(d3:d10,b3:b10=f3)),篩選器合約的重複資料刪除操作的名稱。
輸入公式:let(a,unique(filter(d3:d10,b3:b10=f3)),concat(torow(hstack(unique(a),":("&sumifs(c:c,d:d,a,b:b,f3)&"),")))
效果如下圖 8 所示
圖8 合併後,發現需要去掉最後乙個逗號,可以再做一次
名稱:B 公式:
let(a,unique(filter(d3:d10,b3:b10=f3)),concat(torow(hstack(unique(a),":("&sumifs(c:c,d:d,a,b:b,f3)&"),")))
輸入以下公式:let(b,let(a,unique(filter(d3:d10,b3:b10=f3)),concat(torow(hstack(unique(a),":("&sumifs(c:c,d:d,a,b:b,f3)&"),")))left(b,len(b)-1))
函式定義:先確定b的長度,然後用left從左邊提取b長度小於1個字元的字段。
效果如下圖9所示
跟顧哥一起學習PMC生產策劃和運營,一輩子夠嗎?