返回列表 上一主題 發帖

[發問] 只輸入簡短文字或數字,以名稱或帳號查詢

[發問] 只輸入簡短文字或數字,以名稱或帳號查詢

只輸入簡短文字或數字,以名稱或帳號查詢

問題如下:
今因帳號大部分前10碼為相同數字
以模糊查詢方式例如在  Q8儲存格以數字方式輸入帳號   1020
Q9-Q51儲存格範圍顯示含有  1020 之數據全部顯示(若是筆數多較有問題...)
如何修正公式才能以輸入帳號末 4 碼之原則搜尋帶出相關含有 1020之選項

希望結果是以模糊查詢方式
例如在  Q8儲存格以數字方式(末4碼)或以戶名方式查詢



0117.rar (122.7 KB)

頭/身/尾 分查
Xl0000363.rar (57.59 KB)

TOP

謝謝提問的..
也謝謝回答的准提部林先進..
學到了..
雲峰

TOP

回復 2# 准提部林

非常感謝版主 准提部林  @回覆
針對所述問題解答有一疑問??
若是只在原儲存格…Q8  不另設置…S8  的狀態下
是否在原儲存格…Q8能達成輸入簡短文字或數字,以名稱或帳號查詢 ??

TOP

本帖最後由 Andy2483 於 2023-1-19 08:30 編輯

回復 4# cypd


    '謝謝前輩發表此主題與範例,謝謝 准提部林前輩指導
'以下是後學建議不變更 准提部林前輩範例原本公式的折衷方案:分拆字串,請前輩試試看

'將下列程式碼放入 "單" 工作表模組裡

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address = "$Q$8" Then
   '↑如果編輯內容的儲存格位址是 "$Q$8"
      If InStr(.Value, "*") Then
      '↑如果編輯的結果內容裡包含"*"字元
         [S8] = Split(.Value, "*")(1): [Q8] = Split(.Value, "*")(0)
         '↑if條件成立就令[S8]儲存格是 以"*"字元分割[Q8]儲存格後右邊的字串,
         '令[Q8]儲存格是 以"*"字元分割[Q8]儲存格後左邊的字串
         '所以以[Q8]儲存格輸入 "永豐*28" 為例:[S8]="28",[Q8]="永豐",
         '另外以 "永豐*" 為例:[S8] = "" , [Q8]="永豐"

      End If
   End If
End With
End Sub

輸入 "永豐*28" :

結果:


----------------------------------------------------
輸入 "永豐*" :

結果:
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 4# cypd

試試//
Xl0000363-1.rar (57.34 KB)

TOP

回復 6# 准提部林

太感謝版主 准提部林  @回覆

實測結果非常完美
簡單由實惠  ^^

TOP

回復 5# Andy2483

感謝  Andy2483  熱心回覆  ^^

將所 vba模組程式碼產生分拆字串
又是另一種分享...獲益良多

TOP

本帖最後由 Andy2483 於 2023-2-18 15:46 編輯

回復 6# 准提部林


    謝謝前輩,請前輩再指導

1.先在客戶基本資料表設輔助欄(B欄)
1.1.植入=IF(單!$Q$8="","",IF(ISERR(SEARCH(單!$Q$8,C2&D2&"/")),"",ROW(A2)))    :顯示 空白或列號

1.2.SEARCH(單!$Q$8,C2&D2&"/"): 回傳 字元位置
以 單!$Q$8值字串當要找尋的文字, 用SEARCH()搜尋 C2&D2&"/" 所組成的新字串 回傳 所在的開始位置
單!$Q$8 ="中華*1020/" : 是要找尋的文字,而中間有個 * 萬字元,所以找尋的文字串是: 以 "中華" 開頭, 以 "1020/" 結尾的連續字串的意思
最後的 "/" 是為了確定是字串的結尾字元
如果要找尋的文字不在 C2&D2&"/" 所組成的字串裡! 則會傳回 #VALUE! 錯誤值。

1.3.ISERR(字元位置): 錯誤值判定 回傳1或0
如果 字元位置 回傳  #VALUE! 錯誤值!   錯誤值判定是1
但如果 字元位置是數字! 錯誤值判定是0

1.4.IF(錯誤值判定,"",ROW(A2))) :空白或列號
IF(單!$Q$8="","",空白或列號)
如果 單!$Q$8 是空白!就不必SEARCH(),在儲存格顯示空白
否則就回傳 IF(ISERR(SEARCH()),"",ROW(A2))是空白或列號,顯示在儲存格

2.[Q9]=INDEX(客戶基本資料!C:C,SMALL(客戶基本資料!B:B,ROW(A1)))&"_"&INDEX(客戶基本資料!D:D,SMALL(客戶基本資料!B:B,ROW(A1)))
中華電信股份有限公司_66001020001020

2.1.顯示 回傳戶名&"_" & 回傳帳號

2.2.回傳戶名=INDEX(客戶基本資料!C:C,SMALL(客戶基本資料!B:B,ROW(A1)))        ="中華電信股份有限公司"
ROW(A1)   =1
SMALL(客戶基本資料!B:B,ROW(A1))      =2
回傳 客戶基本資料!B欄第1小的值

INDEX(客戶基本資料!C:C,SMALL(客戶基本資料!B:B,1))
INDEX(客戶基本資料!C:C,2)
回傳 客戶基本資料!C2儲存格的值

2.3.回傳帳號=INDEX(客戶基本資料!D:D,SMALL(客戶基本資料!B:B,ROW(A1)))
ROW(A1)          =1
SMALL(客戶基本資料!B:B,ROW(A1))          =2
回傳 客戶基本資料!B欄第1小的值

INDEX(客戶基本資料!D:D,2)
回傳 客戶基本資料!D2儲存格的值       =  "66001020001020"
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# Andy2483

非常感謝  Andy2483  熱心回覆  ^^

懂得應用才像學生,臉皮厚點學會更謹慎積極

針對題內公式用心詳細講解每一過程含意...心中感恩

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題