都知道怎么用Excel過濾數(shù)據(jù)状答,怎么用Excel把數(shù)據(jù)按要求變多呢冷守?

工作中經(jīng)常遇到需要用Excel篩選數(shù)據(jù),最后的結(jié)果是數(shù)據(jù)量變少惊科。

今天遇到一個例子拍摇,是要用Excel把數(shù)據(jù)變多,具體要求是把下圖這樣的數(shù)據(jù)

都知道怎么用Excel過濾數(shù)據(jù)馆截,怎么用Excel把數(shù)據(jù)按要求變多呢充活?

擴充為

都知道怎么用Excel過濾數(shù)據(jù),怎么用Excel把數(shù)據(jù)按要求變多呢孙咪?

具體要求為:把編碼和店名都添加原始數(shù)據(jù)的序號堪唐,然后再標(biāo)記1巡语、2翎蹈、3,中間用-連接男公,原始地址保持不變荤堪。

數(shù)據(jù)量不確定,少的有幾條枢赔,多的有幾百條上千條澄阳,需要經(jīng)常做。

同事的做法

在我知道這項工作之前踏拜,同事是這樣做的:分別把每一條信息復(fù)制粘貼2次碎赢,然后分別為編碼和店名添加序號再標(biāo)記為1、2速梗、3肮塞。

我沒有敢問ta做這項工作究竟要花多少時間,因為ta提起這項工作時是一把鼻涕一把淚姻锁。

Excel公式和輔助列法

1枕赵、首先添加兩個輔助列,分別為“編碼2”和“店名2”位隶。

2拷窜、然后用公式在這兩個新列里分別為編碼和店名添加序號。

都知道怎么用Excel過濾數(shù)據(jù),怎么用Excel把數(shù)據(jù)按要求變多呢篮昧?

公式分別為(注意我把原始數(shù)據(jù)弄成了table形式赋荆,這樣寫公式就很方便):

  =[@編碼]&ROW()-1
  =[@店名]&ROW()-1

為什么要用ROW()-1呢,這是通過觀察得來的:由于標(biāo)題行占了單獨的一行恋谭,因此每條記錄的序號比當(dāng)前行的行號少1糠睡。

3、把剛才新增的兩列數(shù)據(jù)復(fù)制后疚颊,粘貼為值狈孔,把編碼和店名兩列的原始數(shù)據(jù)覆蓋掉,并按編碼排序:

都知道怎么用Excel過濾數(shù)據(jù)材义,怎么用Excel把數(shù)據(jù)按要求變多呢均抽?

4、然后再添加兩個新列,然后獲取對應(yīng)的編碼和店名的1帝美、2自娩、3標(biāo)記。這里我用行號減去1后和3取模深寥,再用if判斷,如果余數(shù)為0則將其變?yōu)?贤牛。

都知道怎么用Excel過濾數(shù)據(jù)惋鹅,怎么用Excel把數(shù)據(jù)按要求變多呢?

公式為:

=IF(MOD(ROW()-1,3)=0,[@編碼]&"-3",[@編碼]&"-"&MOD(ROW()-1,3))
=IF(MOD(ROW()-1,3)=0,[@店名]&"-3",[@店名]&"-"&MOD(ROW()-1,3))

5殉簸、最后闰集,剪切最后兩列,粘貼為值般卑,第二次覆蓋編碼和店名兩列武鲁。完成。

用公式法蝠检,可以在5-10分鐘內(nèi)完成所有操作沐鼠。

但缺點是每次新數(shù)據(jù)來了之后,要再重復(fù)一遍整個過程叹谁,對于懶人來說饲梭,這是不可接受的。懶人的人生哲學(xué)是——辛苦一次本慕,終身享受排拷。

PowerQuery一勞永逸法

所以,要想辛苦一次锅尘,終身享受监氢,還是要祭出PowerQuery大法來布蔗。這樣模型建好之后,每次新數(shù)據(jù)來了浪腐,我只需要刷新即可纵揍。

不多說,直接上代碼:

let
 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],//從Excel引入數(shù)據(jù)源
 更改的類型 = Table.TransformColumnTypes(源,{{"編碼", type text}, {"店名", type text}, {"地址", type  text}}),//PowerQuery自動添加的步驟议街,可以省略
 已添加索引 = Table.AddIndexColumn(更改的類型, "索引", 1, 1),//索引的目的是獲取原始數(shù)據(jù)的行號泽谨,以便于將其插入到編碼和店名兩列
 自定義1 = Table.Combine({已添加索引,已添加索引,已添加索引}),//這一步相當(dāng)于復(fù)制粘貼兩次原始數(shù)據(jù)
 排序的行 = Table.Sort(自定義1,{{"索引", Order.Ascending}}),//我們還是按原始數(shù)據(jù)的序號順序排列。
 已添加索引1 = Table.AddIndexColumn(排序的行, "索引.1", 1, 1),//我另增加了一個索引列特漩,用于生成后面需要標(biāo)記的1吧雹、2、3
 已添加自定義 = Table.AddColumn(已添加索引1, "自定義", each if Number.Mod([索引.1],3)=0 then 3 else Number.Mod([索引.1],3)),//這一步就是生成了每一條原始記錄的1涂身、2雄卷、3的序號
 自定義2 = Table.FromRecords(Table.TransformRows(已添加自定義, (r) => Record.TransformFields(r,{"編碼", each r[編碼]&Text.From(r[索引])}))),//這一步和后面的一步是為編碼和店名添加原始數(shù)據(jù)中的序號,我分開寫的蛤售,其實可以合并
 自定義4 = Table.FromRecords(Table.TransformRows(自定義2, (r) => Record.TransformFields(r, {"店名", each r[店名]&Text.From(r[索引])}))),//同上
 刪除的列 = Table.RemoveColumns(自定義4,{"索引", "索引.1"}),//刪除不需要的列
 自定義3 = Table.FromRecords(Table.TransformRows(刪除的列, (r) => Record.TransformFields(r, {"編碼", each r[編碼]&"-"&Text.From(r[自定義])}))),//這一步和下一步都是為編碼和店名添加1丁鹉、2、3的序號
 自定義5 = Table.FromRecords(Table.TransformRows(自定義3, (r) => Record.TransformFields(r, {"店名", each r[店名]&"-"&Text.From(r[自定義])}))),//同上
 刪除的列1 = Table.RemoveColumns(自定義5,{"自定義"})//刪除不需要的列
in
 刪除的列1

用PowerQuery處理的難點是擴充了原始數(shù)據(jù)后悴能,怎么按規(guī)律生成1揣钦、2、3的序號漠酿。由于早就把最簡單的數(shù)學(xué)還給了體育老師冯凹,我在這里還是折騰了好半天,最后采取了一個不怎么優(yōu)雅的方式(對3取模后再用if來判斷记靡,把余數(shù)為0更改為3)谈竿。注意代碼中团驱,//表示注釋摸吠。

PowerQuery怎么刷新?

其實我上面貼的代碼嚎花,在新的數(shù)據(jù)產(chǎn)生后寸痢,不能直接刷新——因為還得把新數(shù)據(jù)粘貼到數(shù)據(jù)模型的sheet1中。

更偷懶的辦法是把原始數(shù)據(jù)的Excel文件單獨放在一個文件夾中紊选,在該文件夾之外新建一個Excel版的PowerQuery數(shù)據(jù)模型啼止,數(shù)據(jù)源就引用該文件夾,這樣兵罢,當(dāng)心數(shù)據(jù)產(chǎn)生后献烦,把老的原始文件刪除,把新的數(shù)據(jù)丟到這個文件夾卖词,再打開數(shù)據(jù)模型刷新即可巩那。

這樣操作后,以后要做的就只有三步了:

1.刪除老的原始數(shù)據(jù)文件;

2.把新的原始數(shù)據(jù)文件丟到該文件夾下面即横;

3.打開數(shù)據(jù)模型所在的Excel文件噪生,刷新,完成东囚。

結(jié)語

如果一項工作總是需要重復(fù)做反復(fù)做跺嗽,我就會想法子偷懶,找有沒有更簡單的辦法页藻。最經(jīng)常的情況是桨嫁,每次做這項工作本身只需要1個小時,結(jié)果我花了幾個小時乃至幾十個小時才找到簡便的方法份帐。

表面上看得不償失瞧甩。但由于我找到的方法是一種模式和套路,因此弥鹦,以后凡是要再做這項工作時肚逸,我花費的時間不再是一個小時,而是兩分鐘彬坏。準(zhǔn)確來說朦促,是從此以后,任何人再做同樣的工作栓始,只需要兩分鐘务冕。這無論是對個人還是對企業(yè)來說,都很有價值幻赚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末禀忆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子落恼,更是在濱河造成了極大的恐慌箩退,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佳谦,死亡現(xiàn)場離奇詭異戴涝,居然都是意外死亡,警方通過查閱死者的電腦和手機钻蔑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門啥刻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咪笑,你說我怎么就攤上這事可帽。” “怎么了窗怒?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵映跟,是天一觀的道長钝满。 經(jīng)常有香客問我,道長申窘,這世上最難降的妖魔是什么弯蚜? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮剃法,結(jié)果婚禮上碎捺,老公的妹妹穿的比我還像新娘。我一直安慰自己贷洲,他們只是感情好收厨,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著优构,像睡著了一般诵叁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钦椭,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天拧额,我揣著相機與錄音,去河邊找鬼彪腔。 笑死侥锦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的德挣。 我是一名探鬼主播恭垦,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼格嗅!你這毒婦竟也來了番挺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤屯掖,失蹤者是張志新(化名)和其女友劉穎玄柏,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懂扼,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡禁荸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年右蒲,在試婚紗的時候發(fā)現(xiàn)自己被綠了阀湿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瑰妄,死狀恐怖陷嘴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情间坐,我是刑警寧澤灾挨,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布邑退,位于F島的核電站,受9級特大地震影響劳澄,放射性物質(zhì)發(fā)生泄漏地技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一秒拔、第九天 我趴在偏房一處隱蔽的房頂上張望莫矗。 院中可真熱鬧,春花似錦砂缩、人聲如沸作谚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妹懒。三九已至,卻和暖如春双吆,著一層夾襖步出監(jiān)牢的瞬間眨唬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工好乐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留单绑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓曹宴,卻偏偏與公主長得像搂橙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子笛坦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容