問題:
在應用開發中,可能會有這樣一種場景:已知資料表A字段名定義(中文名稱,英文字段名),已知顯示表格字段名(中文名稱),希望找到顯示表格列對應的字段(英文名)。
換句話說,就是用表格顯示資料表中的資料,資料表的定義知道了(二維數組),要顯示的字段知道了,現在要找出要顯示的字段的英文名出來。
解決:
以上問題使用EXCEL解決,先将資料表定義複制到B、C列,查找字段中文名稱複制到C列,H列為存儲結果。
資料表定義 | 字段中文名稱 | 英文名稱是什麼? | |
B | C | E | H |
KEY | VALUE | KEY | ?VALUE |
1、H列為結果列,在B-C表中,查找使B=E,然後取出B-C表的值,即C列,H公式為:
=LOOKUP(1,1/(E2=$B$2:$B$52),$C$2:$C$52)
H列按住右下角十字标往下拖,即可完成對E列的查找。
這裡模拟問題中的場景資料:B列相當于字段中文名稱,C列相當于字段英文名,E列相當于需求中要求顯示的字段,H列相當于輸出結果。
可以看到H列中已經顯示了查找結果,有部分字段沒有找到比對值。
注:
這樣的公式将輸出錯誤的結果:
=LOOKUP(E2,$B$2:$B$52,$C$2:$C$52)
LOOKUP是模糊比對,會出現找到的結果并不完全比對查找KEY的情況。
2、若需要将#N/A值轉換為空,則公式為:
=IFERROR(LOOKUP(1,1/(E2=$B$2:$B$52),$C$2:$C$52),"")
後續操作:
若要将找出的列變成SQL語句,則可以在對H列資料補全後拷貝H列到UltraEdit編輯器中,使用替換法進行替換。使用UltraEdit正規表達式:
要替換的文本框輸入:^p
替換文本框輸入:,
最後的結果就是以逗号分隔的字段值了,例如:ID,KGSJ,JGSJ......。