設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

不要再 Ctrl+V 了,兩招輕松搞定 Excel 中一列數(shù)據(jù)轉(zhuǎn)多列

秋葉Excel 2023/3/18 18:44:01 責(zé)編:夢澤

原文標(biāo)題:《不要再 Ctrl+V 了!一列數(shù)據(jù)轉(zhuǎn)多列,這 2 招輕松搞定!》

大家好,我是潛伏在很多 Excel 交流群里,時不時冒個泡的小爽~

在其中一個群里,我看到這樣一個問題:如何批量整理標(biāo)題和鏈接?

我簡單整理了一下 (如下表),大致的需求就是:將左表整理成右表的形式。

▲ 為方便演示,僅展示部分?jǐn)?shù)據(jù)

如果是你,你會怎么做呢?

群內(nèi)的小伙伴各自發(fā)表了自己的看法:

用錯位篩選?手機(jī)號碼都有 1 開頭,這個方法可行!

借助單元格引用的方法?這個方法可行!

上面的方法,都是很不錯的方法。

唯一的缺點就是:一旦我們新增或者修改數(shù)據(jù)源內(nèi)容,所有操作需要再重新操作一遍。

所以本文跟大家分享兩種方法,目的是在新增或者修改數(shù)據(jù)源時,能夠動態(tài)更新數(shù)據(jù),下面就跟我一起看看吧~

? Index 函數(shù)索引法

? PowerQuery M 函數(shù)法

1、Index 函數(shù)索引法

我們先來看看具體的操作~

如下圖,在 E3 單元格輸入如下公式:

=INDEX($B$2:$B$11,ROW(A1)*2-1)

在 F3 單元格中輸入如下公式:

=INDEX($B$2:$B$11,ROW(A1)*2)

只需兩個函數(shù)公式,就搞定!

下面我們簡單說一下公式原理~

INDEX 函數(shù)說明:INDEX 函數(shù)可以返回指定的行與列交叉處的單元格引用。

=INDEX (區(qū)域,行數(shù),[列數(shù)],[區(qū)域數(shù)])

案例中公式如下:

=INDEX($B$2:$B$11,ROW(A1)*2-1)

公式中,數(shù)據(jù)區(qū)域為 $B$2:$B$11,姓名列就在綠色區(qū)域內(nèi) 1,3,5,…… 的位置上。

所以我們需要構(gòu)造等差序列 1,3,5……,對應(yīng)的公式如下:

=ROW(A1)*2-1

ROW (A1) 表示行數(shù)為 1,ROW (A1)*2-1=1*2-1=1。

ROW (A2) 表示行數(shù)為 2,ROW (A2)*2-1=2*2-1=3。

ROW (A3) 表示行數(shù)為 3,ROW (A3)*2-1=3*2-1=5。

同理,我們要得到手機(jī)號,需要構(gòu)造等差序列 2,4,6……

等差公式為 = ROW (A1)*2,所以整個函數(shù)為:

=INDEX($B$2:$B$11,ROW(A1)*2)

?? 思路總結(jié):

通過 Row 函數(shù),構(gòu)造等差序列 1,3,5……,用 Index 函數(shù)索引就可以得到姓名列,通過使用 Row 函數(shù)構(gòu)造等差序列 2,4,6……,用 Index 函數(shù)索引即可得到手機(jī)號。

到此,Index 函數(shù)的方法就介紹完了,下面我們來介紹一個 PowerQuery 的 M 函數(shù)法,一定要耐心看下去!

2、PowerQuery M 函數(shù)法

我們先來看看具體的操作步驟:

第一步:將數(shù)據(jù)源導(dǎo)入 PQ 編輯器中

選中表格區(qū)域-選擇【數(shù)據(jù)】選項卡-【自表格 / 區(qū)域】-出現(xiàn)創(chuàng)建表對話框,按住【確定】按鈕。

此時表格就導(dǎo)入 PQ 編輯器啦~

第二步:將數(shù)據(jù)列深化為列表選中數(shù)據(jù)列

鼠標(biāo)右鍵數(shù)據(jù)列-選擇【深化】或者選擇【轉(zhuǎn)換】選項卡下【轉(zhuǎn)化為列表】;

PS:深化和轉(zhuǎn)換為列表的目的都是:將當(dāng)前表中的某列數(shù)據(jù)提取出來形成列表,方便后續(xù)進(jìn)行操作。

此時就變成列表啦 ↓↓↓

第三步:每兩條信息拆解為一個 List

單擊 ,fx 在右邊的編輯欄中添加公式,公式如下:

= List.Split數(shù)據(jù)列2)

此時數(shù)據(jù)就被拆分成兩個元素一條信息啦~

第四步:將拆分后的 List 轉(zhuǎn)化為 Table

這一步要用到 Table.FromList 函數(shù)。

公式如下:

= Table.FromList(自定義 1,each _,{"姓名","手機(jī)號"})

操作動圖:

第五步:實時更新

利用 PQ 做法,我們可以做到實時更新~

下面我們來簡單介紹一下案例中所涉及的 M 函數(shù)。

? List.Split:列表拆分

=List.Split(列表,每次拆幾個)

Split 是分開的意思,List.Split 的意思就是將列表按照每 N 個拆開,形成單獨的 List。

我們的數(shù)據(jù)是每隔 2 個元素為一個完整的信息,所以需要用 List.Split 函數(shù)進(jìn)行拆分。

? Table.FromList:從列表轉(zhuǎn)換到表

=Table.FromList  ( list, 可選 對列表的處理方式 as list  ,  可選-對應(yīng)的標(biāo)題,可選-null 的默認(rèn)值,可選-額外的值處理方式)

拆分完后,我們需要將 List 轉(zhuǎn)為 Table,所以需要用到 Table.FromList 函數(shù)。

= Table.FromList(自定義 1,each _,{"姓名","手機(jī)號"})

第一參數(shù):是一個 List,這里的自定義 1 也就是上一步驟 List.Split 拆分后的列。

第二參數(shù):對上一步驟的操作,由于這里沒有需要處理的,所以直接寫 each _。

第三參數(shù):返回表后的列名,列名為 {"姓名","手機(jī)號"}。

?? 思路歸納:

將表中的數(shù)據(jù)列深化為列表,是因為每 2 個元素為一條信息,所以可以用 List.Split 函數(shù)將每 2 個元素拆分成一個 List。

最后用 Table.FromList 函數(shù)將拆分后的 List 轉(zhuǎn)換為 Table。

到這里,M 函數(shù)的做法也就講完了~

3、總結(jié)一下

本文介紹了兩種整理錯位數(shù)據(jù)的方法:

? Index 函數(shù)索引法最常見的做法,這是 Index 函數(shù)的經(jīng)典用法之一,通過構(gòu)造有規(guī)律的索引值進(jìn)行索引。

? PQ 的 M 函數(shù)做法,需要認(rèn)真研究。

利用深化將查詢表中的某列數(shù)據(jù)提取出來形成列表;利用 List.Split 函數(shù)對列表進(jìn)行拆分,使得每 2 個元素形成一個 list;利用 Table.FromList 將 List 轉(zhuǎn)換為 Table。

這兩種方法在新增或者修改數(shù)據(jù)源時,都能夠動態(tài)更新數(shù)據(jù)!

考考你:

案例中是每兩條元素作為一個信息,如果是三條元素,大家會怎么做呢?

本文來自微信公眾號:秋葉 Excel (ID:excel100),作者:小爽

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:Excel教程,Excel學(xué)院

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機(jī)APP應(yīng)用 魔方 最會買 要知