PowerQuery 問題 請網(wǎng)友分析一下出了什么問題
此網(wǎng)友問題經(jīng)多日溝通,我終于明白他的意思了!在本文章末已經(jīng)做了解答!
很多網(wǎng)友提問,有幾種情況我不回復(fù)
(1)Python所有相關(guān)問題:我一直用3.8版沒有更新,新版部分地方屬性方法變了,我沒有跟進(jìn)。因?yàn)镻ython不是我的主要生產(chǎn)力工具,只有Excel和Access打不開時,我才會用Python處理csv和txt文件。word我只有在爬取文章時做存儲才會用到,Word不存在大數(shù)據(jù),我會首選WordVBA
(2)網(wǎng)友自己做了一個復(fù)雜的軟件,在某個地方卡住了,我若要解決問題,就要花大量的時間先理解你這個軟件,我精力有限。還有一種情況就是有簡單方法,比如Access把查詢的組合框或列表框?qū)懺谥鞔绑w就好,如果一定要寫在子窗體,那就要重新寫函數(shù),且沒有這個必要。
以上兩個問題,不能怪網(wǎng)友,是我的精力有限,請多包涵。
但是,下面的問題,就不能理解了,為什么大家咨詢PowerQuery或ExcelvBA問題時,不能提供原表+目標(biāo)表,原表是你的原始數(shù)據(jù)(舉例數(shù)據(jù)盡量少),目標(biāo)表是你手工做出來的結(jié)果,我給你代碼,我要求不高,為什么90%以上的人做不到呢?
比如這個問題:
聲明:我不會公開任何人的賬號,因?yàn)檫@是一個普遍現(xiàn)像,占比高達(dá)90%,不是某個人的問題

兩張圖片放大




圖片放大:



兩張圖片放大:


每個人問的問題我都會認(rèn)真看,我寫這個文章的目的是告訴大家,您可以不會做,但是一定要知道自己想做什么。你可以不會打官司,你又不是律師。但是你都不知道自己要打什么官司,羅老師也幫不了你。
我將網(wǎng)友的原圖和目標(biāo)圖放在一起:

我們對右邊的目標(biāo)圖逐行分析:
前四行
(1)A就是原表中的503,可以理解
(2)這么的B是怎么求的和?我無法理解
503+506=1009? ? ?如果將兩次B都算上那是?503+506+506 = 1515??
我一開始懷疑這里是您計(jì)算錯了,但是后面又說不通了?
(3)C= 503+506+502 = 1511 可以理解
(4)D = 503+506+502+567 = 2078? ?可以理解
再說E到H這四行:
(1)E=765? 就是原表中的765? 可以理解
(2)F= 777 為什么等于777? 而不是765+777 我無法理解
?(3)G為什么不是E+F+G而是F+G? 我無法理解
(4)H為什么不是E+F+G+H而是F+G+H我無法理解
再說I到L這四行:
(1)I=333 是原表中的數(shù)據(jù),可以理解
(2)J=1665怎么得到的?J+I得不到,2次J的值+I也不對,無法理解
(3)k = I+J+K = 599? ,可以理解
(4)L=I+J+K+L=687 ,可以理解
再說MNO這三行,層次是1、3、4
(1)M=999? 是原表中的數(shù)據(jù),可以理解
(2)N= 原表的M+B+N= 999+506+77 = 1582 可以理解
(3)O=原表的M+B+N+O=2581? 可以理解
再說PQR這三行,層次1、2、4
(1)P=222 是原表中的數(shù)據(jù),可以理解
(2)Q=P+Q=255 可以理解
(3)R = 原表中P+Q+G+R=1476 可以理解
再說STU這三行,層次1、2、4
(1)S = 444 是原表中的數(shù)據(jù),可以理解
(2)T = S+T = 999? ,可以理解
(3)U = 原表中S+T+J+U= 1776? 可以理解
請將我不理解的紅色字體讓我理解。如果能講清楚,我給你寫出現(xiàn)成代碼和思考過程!如果您能說清楚,我會在這個文章最下面補(bǔ)充解決方案。

網(wǎng)友看到后給了回復(fù):


我來講講網(wǎng)友的需求是什么,下圖紅框內(nèi)的數(shù)據(jù)是網(wǎng)友的原始表。他需要按成品料號和層級為組計(jì)算累積值。你可以把成品料號想成是班級,層級想成是學(xué)號,
假設(shè)一班,1號同學(xué)1分(累計(jì)1分),2號同學(xué)2分(累計(jì)1+2分),3號同學(xué)3分(累計(jì)1+2+3分),4號同學(xué)4分(累計(jì)1+2+3+4分),二班、三班以此類推

接下來,我們發(fā)現(xiàn),子項(xiàng)物料代碼有重復(fù)的,遇到重復(fù),我們?nèi)±塾?jì)值的最大值。保留第一次出現(xiàn)的B,并將對應(yīng)的數(shù)量改成B里面對應(yīng)的最大值,刪除之后出現(xiàn)的B,整體表格順序不變

好比我們給原始數(shù)據(jù)增加一個序號,最終要修改序號2和序號10的數(shù)量列,并刪除序號14、19、23

得到下面結(jié)果:

現(xiàn)在問題講清楚了。這個很簡單
第1步:將原始表導(dǎo)入PowerQuery

第2步:按成品料號列分組

第3步:將數(shù)據(jù)列每個Table按列轉(zhuǎn)成列表,再連接上累計(jì)值,再轉(zhuǎn)成表

關(guān)于累計(jì)值,在M函數(shù)第二季第1集講了

第4步:將列表中的每個Table合并到一起

第5步:給表添加索引列
點(diǎn)鼠標(biāo)就可以了,避免將來數(shù)據(jù)亂了。本案例不加也沒事。

第6步:對子項(xiàng)物料代碼分組
我們就可以看到每個Table,我們的目的是將數(shù)量都改成最大值,每個Table只留第1行

第7步:把上圖我們要表達(dá)的事情寫成代碼
就得到了我們要的結(jié)果,因?yàn)樗桓淖冺樞?,所以我沒有使用表格篩選最大值的方法

第8步:合并列表中的每個Table

第10步:如果順序亂了,可以用索引排序,剛才說了本案例不需要,最后刪除你不要的列
這個就是網(wǎng)友需要的樣子!

做不出來,是我學(xué)藝不精,但是提問者一定要說清楚自己想做什么。你能說清楚,我就盡量幫且你。

PowerQuery合集:https://www.bilibili.com/video/BV1oa4y1j75e
更多教程:https://www.bilibili.com/read/cv10222110