Board logo

標題: [發問] switch判斷欄位第一個字元問題 [打印本頁]

作者: 爆肝達人    時間: 2023-11-27 14:54     標題: switch判斷欄位第一個字元問題

[attach]37071[/attach]

使用情境:

B2欄位中字串,第一位字元為0時,C2欄位呈現BV字串

C2欄位的switch函數如下,
  1. =SWITCH(LEFT($B2),"0",$E$2,"1",$E$3,"4",$E$4)
複製代碼
有發現B2及B3的字串數不會有5個字串,想說先補0,變成'00001對應出來資料會出現#NA

有前輩有更好的方式函數就能對應?

謝謝 感恩~
作者: 准提部林    時間: 2023-11-27 16:14

=INDEX(E:E,FIND(LEFT(TEXT(B2&"","00000;9;9;\9")),"+014"&1/17))&""

014之外, 為""
作者: 爆肝達人    時間: 2023-11-28 08:53

本帖最後由 爆肝達人 於 2023-11-28 09:06 編輯

回復 2# 准提部林
不好意思,我沒講清楚要的結果


圖B:B欄位中有值

1~160、10001~10256、40001~40512


在C:C呈現B:B值應變數區D2:D4的數字,再配對E2:E4的值顯示再C:C欄位

只是1這個值開頭不是0,一開始想法是補0在對應D2:D4的值


前輩的函數我使用過後效果不是我要的,又或者我誤解這段函數使用

switch函數要+入前輩的這段函數?

非常感謝前輩指教
作者: 准提部林    時間: 2023-11-28 09:52

回復 3# 爆肝達人

=iferror(VLOOKUP(--LEFT(TEXT(B2,"00000")),D:E,2,),"")
作者: 爆肝達人    時間: 2023-11-28 11:29

回復  爆肝達人

=iferror(VLOOKUP(--LEFT(TEXT(B2,"00000")),D:E,2,),"")
准提部林 發表於 2023-11-28 09:52



   感恩 前輩已解決~~效果是我需求~~
作者: Andy2483    時間: 2023-11-28 16:21

回復 1# 爆肝達人


    謝謝前輩發表此主題與範例
後學藉此帖練習陣列與字典,學習方案如下,請前輩參考

執行前:
[attach]37073[/attach]

執行結果:
[attach]37074[/attach]

Option Explicit
Sub TEST()
Dim Brr, Z, i&
Set Z = CreateObject("Scripting.Dictionary")
Brr = Range([E2], [D65536].End(3))
For i = 1 To UBound(Brr): Z(Val(Brr(i, 1))) = Brr(i, 2) & "": Next
Brr = Range([B2], [B65536].End(3))
For i = 1 To UBound(Brr)
   If Trim(Brr(i, 1)) Like "#*" = False Then Brr(i, 1) = "": GoTo i01
   Brr(i, 1) = Z(Val(Left(Format(Brr(i, 1), "00000"), 1)))
i01: Next
[H2].Resize(UBound(Brr)) = Brr
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)