小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

這種數(shù)據(jù)轉(zhuǎn)換問題你能解決嗎?看看這個巧妙的方法 - Power Excel

 zonge 2025-07-07 發(fā)布于湖北

圖片


今天我們要解決的是這樣一個問題:

圖片

假設我們面對這樣一份原始數(shù)據(jù),B列記錄每個條目的數(shù)量?,F(xiàn)在要求你根據(jù)這份數(shù)據(jù)生成一個結(jié)果表,其中對應于A列的每一個條目,在結(jié)果表中都有多行,行數(shù)由B列的數(shù)量確定。比如,條目A對應數(shù)量為3,在結(jié)果表中,A就有3行。如下圖:

圖片

分析

這個問題在實際中直接遇到的機會并不太大,但是在解決其他問題時經(jīng)常會遇到。因為這是解決其他很多問題的一個中間步驟。

使用傳統(tǒng)方法的話,在Excel中要想解決這個問題,只能是手工操作了。頂多利用一些“高超的”技巧加快速度。實際上也很麻煩。

用Power Query可以解決這個問題,方法我們以前介紹過。雖然這也是一個自動化方案,但是畢竟又添加了一個實體,很啰嗦。而且考慮這個問題往往是作為中間步驟出現(xiàn)的,因此,Power  Query并不是一個最優(yōu)的方案。

于是,重擔落在了Excel函數(shù)上。

利用Excel函數(shù)式編程可以比較巧妙地解決這個問題。

思路

先來看解決的思路。

很多人一開始想到的是使用循環(huán)來處理。但是這個問題用循環(huán)來處理會比較啰嗦。

簡單思路是這樣的:

圖片

  1. 原始數(shù)據(jù)

  2. 從原始數(shù)據(jù)生成表2。規(guī)則就是重復A列中的姓名 n 次( n 就是B列對應的數(shù)量)

  3. 將表2中的內(nèi)容拆分成多列,得到表3

  4. 將表3中的內(nèi)容合并成結(jié)果表格

這里每一步都可以用Excel函數(shù)輕松實現(xiàn)。

不過這個思路簡化了其中的復雜性。因為我們實際中遇到的A列名稱很可能不是簡單的一個字母的形式,而是多個字符,變長的名稱,比如:張三豐,郭靖,上官婉兒等等。

這樣的話,從表2轉(zhuǎn)為表3就會遇到困難。

所以我們需要稍微修正一下這個思路:

圖片

其中,表2跟前一個思路差不多,仍然是重復 n 次。但是重復的時候包括“,“;這一步可以使用公式:

=REPT(A2 &",",B2)

表3不再拆分成多列,而是將表2合并成一個字符串,注意合并的時候行分隔符也是用”,”。這一步的公式如下:

=TEXTJOIN(",",,F2:F5)

注意表3中有的地方有兩個連續(xù)的逗號“,”。

表4可以通過表3拆分得到,

=TEXTSPLIT(A8,,",",TRUE)

注意第四個參數(shù)是TRUE,表示忽略空白值。

最終的公式

最終,我們可以使用這樣一個公式完成這個工作:

=LET(    data, A2:B5,    dataRept, REPT(CHOOSECOLS(data,1) & ",", CHOOSECOLS(data,2)),    TEXTSPLIT(        TEXTJOIN(",",,dataRept),        ,        ",",        TRUE    ))

其中,

第2行實現(xiàn)了思路中的表2;

第5行實現(xiàn)了思路中的表3;

第4~9行完成了最后的結(jié)果,將表3拆分為表4。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多