標題:
[發問]
新舊帳號姓名轉換之疑惑?
[打印本頁]
作者:
cypd
時間:
2020-8-12 23:08
標題:
新舊帳號姓名轉換之疑惑?
本帖最後由 cypd 於 2020-8-12 23:17 編輯
新舊帳號姓名轉換之疑惑?
[attach]32392[/attach]
如圖所示:
1.資料來源為電腦轉換格式(從其他檔案複製貼上未改變其格式-E2:E597)
2.(E2:E597之格式不一,有數字(含全型數字)、中文姓名+數字參雜…)
3.(E2:E597資料來源數字為帳號代碼-舊帳號+新帳號混合)
4.經由複製資料來源電腦轉換格式貼上至 (預設 E2:E1001區間)
5.希望結果為 K欄更新帳號(需 4 碼) 及 L欄產生帳號對應之姓名
6.貼上帳號(舊、新)欄位 E2:E1001,經由公式轉換為 K欄為新帳號及 L欄產生帳號對應之姓名
7.若 K欄內之帳號經查核非新帳號(B2:B93)則 L欄相關位址顯示 無此代碼
8.(E2:E1001區間內含有中文姓名或姓名+數字或符號…)該如何轉換成新帳號???
*因為 E2:E597內容帳號格式不一筆數資料多甚為困擾,難以辨識舊帳號為何人?)
作者:
jcchiang
時間:
2020-8-13 11:09
回復
1#
cypd
做帳號識別
G2=IF(ISERROR(VALUE(LEFT(E2,1))),IF(ISERROR(VALUE(LEFT(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-",""),4))),TRIM(E2),VALUE(LEFT(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-",""),4))),VALUE(LEFT(SUBSTITUTE(E2,"-",""),4)))
帳號轉換
I2=IFERROR(VLOOKUP(G2,IF({1,0},C:C,B:B),2,0),IFERROR(VLOOKUP(G2,IF({1,0},A:A,B:B),2,0),G2))
產生姓名
J2=IFERROR(VLOOKUP(I2,IF({1,0},B:B,A:A),2,0),"無此代碼")
另外在G欄設定公式是避免I欄公式過長,看到眼花
以上是以所提供的資料格式做解讀,如有其他格式請自行修改
作者:
cypd
時間:
2020-8-13 14:35
回復
2#
jcchiang
非常感謝您的用心指導
1.帳號識別
G2=IF(ISERROR(VALUE(LEFT(E2,1))),IF(ISERROR(VALUE(LEFT(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-",""),4))),TRIM(E2),VALUE(LEFT(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-",""),4))),VALUE(LEFT(SUBSTITUTE(E2,"-",""),4)))
2.帳號轉換(G欄設定公式是避免I欄公式過長)
I2=IFERROR(VLOOKUP(G2,IF({1,0},C:C,B:B),2,0),IFERROR(VLOOKUP(G2,IF({1,0},A:A,B:B),2,0),G2))
3.產生姓名
J2=IFERROR(VLOOKUP(I2,IF({1,0},B:B,A:A),2,0),"無此代碼")
重點在...I 欄公式轉換時會導致CPU計算:(1~100處理器)"1~100%
[attach]32396[/attach]
是否能再針對(.I 欄公式)此問題再行修正讓檔案執行更順暢...感恩
作者:
jcchiang
時間:
2020-8-14 09:02
本帖最後由 jcchiang 於 2020-8-14 09:09 編輯
回復
3#
cypd
G2=IF(ISERROR(VALUE(LEFT(E2,1))),IF(ISERROR(VALUE(SUBSTITUTE(UPPER(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-","")),"Z",""))),TRIM(E2),VALUE(SUBSTITUTE(UPPER(SUBSTITUTE(RIGHT(E2,2*LEN(E2)-LENB(E2)),"-","")),"Z",""))),VALUE(LEFT(SUBSTITUTE(UPPER(SUBSTITUTE(E2,"-","")),"Z",""),4)))
I2=IFERROR(INDEX(B:B,MATCH(G2,C:C,0),1),G2)
J2=IFERROR(INDEX(A:A,MATCH(I2,B:B,0),1),IFERROR(INDEX(A:A,MATCH(I2,A:A,0),1),"無此代碼"))
作者:
jcchiang
時間:
2020-8-14 09:28
回復
4#
jcchiang
忘了I欄是放工號
I2=IFERROR(INDEX(B:B,MATCH(G2,C:C,0),1),IFERROR(INDEX(B:B,MATCH(G2,A:A,0),1),G2))
J2=IFERROR(INDEX(A:A,MATCH(I2,B:B,0),1),"無此代碼")
作者:
准提部林
時間:
2020-8-14 10:31
F2/陣列公式:輔助公式
=IFERROR(-LOOKUP(1,-MID(E2,MIN(FIND(ROW($1:$10)-1,ASC(E2)&1/17)),{1,2,3,4})),"")
K2:
=IF(F2="","",IFERROR(INDEX(B:B,-LOOKUP(1,IF({1,0},-MATCH(F2,B:B,),-MATCH(F2,C:C,)))),F2))
L2:
=IF(K2="","",IFERROR(INDEX(A:A,MATCH(K2,B:B,)),"無此代碼"))
作者:
cypd
時間:
2020-8-14 23:58
回復
6#
准提部林
感謝 准提部林 不吝指導
F2/陣列公式:輔助公式
=IFERROR(-LOOKUP(1,-MID(E2,MIN(FIND(ROW($1:$10)-1,ASC(E2)&1/17)),{1,2,3,4})),"")
1.問題:若貼上之代碼為中文姓名時 上述陣列公式無法正確產生所要之結果...如 (F564~F597)
[attach]32404[/attach]
2.問題:E499之儲存格內數據為 32-2
E562之儲存格內數據為 55-0
同樣是三位數加-,經公式轉換後為何?
E499之儲存格內數據為 32-2轉換為 11720
E562之儲存格內數據為 55-0轉換為 0050
轉換後的代碼 11720、0050 與姓名新帳號代碼不同卻能顯是相對應姓名?
(是否能將 F欄的公式修正取 E 欄的數字為主比較好辨識 例-933(0933) 32-2(0322) 55-0 Z(0550)
[attach]32405[/attach]
作者:
cypd
時間:
2020-8-15 00:33
回復
5#
jcchiang
水啦!!針對重點在...I 欄公式轉換時會導致CPU計算:(1~100處理器)"1~100%
經過 jcchiang 高手修正後貼上帳號代碼後執行非常順暢 ^^感恩
另外若是儲存格內之數據為 15-9B B15-9 505-A...
會呈現 #VALUE! B15-9 #VALUE! 錯誤!該如何修正公式?
[attach]32406[/attach]
作者:
准提部林
時間:
2020-8-15 09:31
回復
7#
cypd
純姓名如何顯示???
=IFERROR(-LOOKUP(1,-SUBSTITUTE(MID(E2,MATCH(,MID(E2,ROW($1:$19),1)*0,),{1,2,3,4,5}),"-",)),TRIM(E2))
作者:
cypd
時間:
2020-8-15 22:53
回復
9#
准提部林
真是太神了!!
所遇的問題由 准提部林 版主指導之公式已迎刃於解
將近 1000 多筆的舊帳號(格式參差不齊...)
經以上高手指導 2~3 秒就轉換完成 ^^
感恩 :victory:
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)