Board logo

標題: [發問] 下拉選單模糊搜尋後相同名稱不同值之困惑... [打印本頁]

作者: cypd    時間: 2022-5-6 04:06     標題: 下拉選單模糊搜尋後相同名稱不同值之困惑...

有一套印表單
下拉選單模糊搜尋後相同名稱不同值之困惑...
所需客戶基本資料中戶名有相同之客戶擁有不同之帳號
如下圖所示:

[attach]34844[/attach]

在套印表單中,先在 A4 編輯區輸入所需戶名 永豐 之相關字搜尋...

[attach]34845[/attach]
經模糊搜尋出現 4 筆符合永豐相關字之戶名,因所需正確戶名是 永豐商業銀行股份有限公司
因客戶基本資料中戶名 永豐商業銀行股份有限公司 擁有 3 筆不同帳號之銀行帳號
該下拉選單該如何設計
讓相同之戶名選擇時(能在下拉表單選擇時出現提示帳號之顯示嗎?...比較容易選擇想套印之戶名及帳號)
才能點選正確該筆之對應帳號
套印時出現 永豐商業銀行股份有限公司 是必要文字(戶名)   

[attach]34846[/attach]

(問題重點在於相同戶名多筆資料,只能出現對應的第一筆資料帳號...該如何修正公式才能讓所選之戶名對應所建之帳號、銀行、分行及金融代碼)

[attach]34847[/attach]
作者: zz5151353    時間: 2022-5-21 12:36

本帖最後由 zz5151353 於 2022-5-21 12:55 編輯

工作表名稱 : 單
S8 儲存公式下拉
  1. =IFERROR(INDEX(客戶基本資料!D:D,AGGREGATE(15,6,ROW($2:$1501)/(客戶基本資料!$C$2:$C$1501=$A$4),ROW(1:1))),"")
複製代碼
A3 儲存格公式
數據有效性公式
  1. =OFFSET($S$8,,,COUNTIF($S$8:$S$65536,"<>"))
複製代碼

作者: zz5151353    時間: 2022-5-21 12:57

模糊查找
Q7 輸入 永豐

Q8 儲存格公式公式,下拉
  1. =IFERROR(INDEX(客戶基本資料!C:C,AGGREGATE(15,6,ROW($2:$1501)/((ISNUMBER(FIND($Q$7,客戶基本資料!$C$2:$C$1501)))*(--MATCH(客戶基本資料!$C$2:$C$1501,客戶基本資料!$C$2:$C$1501,)=ROW($1:$1500))),ROW(1:1))),"")
複製代碼

作者: cypd    時間: 2022-5-22 13:55

回復 3# zz5151353
非常感謝 版主 zz5151353   熱心回覆
關於依照所示

模糊查找
Q7 輸入 永豐

Q8 儲存格公式公式,下拉
1.        =IFERROR(INDEX(客戶基本資料!C:C,AGGREGATE(15,6,ROW($2:$1501)/((ISNUMBER(FIND($Q$7,客戶基本資料!$C$2:$C$1501)))*(--MATCH(客戶基本資料!$C$2:$C$1501,客戶基本資料!$C$2:$C$1501,)=ROW($1:$1500))),ROW(1:1))),"")

經實測能顯示相關永豐之戶名名稱
請問Q8 儲存格公式公式下拉是否能正確顯示於客戶基本資料相關永豐之戶名全部完整呈現之筆數…4筆

[attach]34929[/attach]
作者: 准提部林    時間: 2022-6-3 10:36

回復 4# cypd

原檔已有輔助欄可用//
[attach]34969[/attach]
作者: cypd    時間: 2022-6-3 23:51

回復 5# 准提部林
非常感謝  准提部林  的指導 ...^^

[attach]34974[/attach]
希望 A3 儲存格格式能像 A8 一樣的間格(因套印表單位置所需)
字型 Arial Narrow 20
請問原 A3公式...MID(Q7,FIND("_",Q7&"_")+1,99) 該如何修正才能符合該樣式?

[attach]34975[/attach]
作者: 准提部林    時間: 2022-6-4 09:55

回復 6# cypd

開頭有0//
=TRIM(TEXT(MID(Q7,FIND("_",Q7&"_")+1,99),REPT("0 ",MAX(,LEN(Q7)-FIND("_",Q7&"_")))))

開頭沒0
=TRIM(TEXT(MID(Q7,FIND("_",Q7&"_")+1,99),REPT("# ",14)))

帳號最多14碼
作者: cypd    時間: 2022-6-5 23:45

回復 7# 准提部林

非常感謝  准提部林  的指導 ...^^

針對所回覆之相關公式...
只輸入簡短文字或數字,以名稱或帳號查詢...正是所需之效果

並考量帳號最多14碼
開頭有0//...因每家機構碼數不同所至
=TRIM(TEXT(MID(Q7,FIND("_",Q7&"_")+1,99),REPT("0 ",MAX(,LEN(Q7)-FIND("_",Q7&"_")))))
所述問題已獲解惑...感恩
作者: cypd    時間: 2022-7-22 17:00

回復 1# cypd

不好意思各位先進...
針對初始檔案現有一問題出現

[attach]35066[/attach]

檔案部分 C 欄戶名原設有格式化條件重覆相同戶名的資料會有色底+紅色字型之區別
另 D 欄帳號同樣設有格式化條件重覆相同帳號的資料會有色底+紅色字型之區別(重要之參考...是否有重複數據判斷刪除依據)
因筆數資料增多  造成函數 COUNTIF 顯示特別慢, 資料筆數增加一多, 會繞圈圈卡檔之窘況!

是否能以  VBA 程式處理加快速度
針對 C、D 兩欄輸入時能有自動呈現如上(色底+紅色字型之區別)...表示有重複之戶名或帳號數據

[attach]35067[/attach]
作者: samwang    時間: 2022-7-23 08:17

回復  cypd

不好意思各位先進...
針對初始檔案現有一問題出現



檔案部分 C 欄戶名原設有格式化條 ...
cypd 發表於 2022-7-22 17:00


設定格式化-->重複值,這樣應該可以吧?
作者: cypd    時間: 2022-7-23 09:18

回復 10# samwang

感謝您的回覆
所提供之方式有試過...筆數愈多時會造成所述繞圈圈問題
作者: samwang    時間: 2022-7-24 08:39

回復  samwang

感謝您的回覆
所提供之方式有試過...筆數愈多時會造成所述繞圈圈問題
cypd 發表於 2022-7-23 09:18


10樓方式是用內建,你的11樓方式是用公式,所以有可能會比較慢
請在確認看看,謝謝
作者: samwang    時間: 2022-7-24 08:52

回復 11# cypd

請測試看看,謝謝
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr, xD, C%, T$, m&, i&
If Target.Column = 3 Then C = 3
If Target.Column = 4 Then C = 4
Set xD = CreateObject("Scripting.Dictionary")
With Sheets("客戶基本資料")
    Arr = .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3))
    .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3)).Font.ColorIndex = 0
    .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3)).Interior.ColorIndex = 0
    For i = 1 To UBound(Arr)
        T = Arr(i, 1)
        If xD.Exists(T) Then
            m = xD(T)
            Cells(m, C).Font.ColorIndex = 3
            Cells(m, C).Interior.ColorIndex = 36
            Cells(i, C).Font.ColorIndex = 3
            Cells(i, C).Interior.ColorIndex = 36
        End If
        xD(T) = i
    Next
End With
End Sub
作者: cypd    時間: 2022-7-24 11:33

回復 13# samwang
太感謝您了...samwang

速度方面問題已 OK
經測試另有問題出現如下
若是 C 或 D 欄出現相同數據時...刪除下列數據之後儲存格會有填滿之色彩存在 ???

[attach]35072[/attach]

[attach]35073[/attach]
作者: samwang    時間: 2022-7-24 15:48

回復  samwang
太感謝您了...samwang

速度方面問題已 OK
經測試另有問題出現如下
若是 C 或 D 欄出現 ...
cypd 發表於 2022-7-24 11:33


修改如下移除.End(3),請測試看看,謝謝
With Sheets("客戶基本資料")
    Arr = .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3))
    .Range(.Cells(1, C), .Cells(Rows.Count, C)).Font.ColorIndex = 0
    .Range(.Cells(1, C), .Cells(Rows.Count, C)).Interior.ColorIndex = 0
作者: cypd    時間: 2022-7-24 20:23

回復 15# samwang

太感謝您了...samwang

C 或 D 欄出現相同數據時...刪除下列數據之後儲存格會有填滿之色彩存在(已解決所述問題  ^^)

[attach]35074[/attach]

該工作表因有相關之公式運算,為確保誤刪造成資料錯誤...設有  [保護工作表]
因保護工作表之關係造成...執行階段錯誤 "1004"
再度麻煩您修正...感恩  ^^
作者: samwang    時間: 2022-7-25 07:45

本帖最後由 samwang 於 2022-7-25 07:47 編輯
回復  samwang

太感謝您了...samwang

C 或 D 欄出現相同數據時...刪除下列數據之後儲存格會有填滿之 ...
cypd 發表於 2022-7-24 20:23


請測試看看,謝謝
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr, xD, C%, T$, m&, i&
If Target.Column = 3 Then C = 3
If Target.Column = 4 Then C = 4
If C = 0 Then Exit Sub
Set xD = CreateObject("Scripting.Dictionary")
With Sheets("客戶基本資料")
    .Unprotect Password:="1234"  '解保護,密碼自行修改
     Arr = .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3))
     .Range(.Cells(1, C), .Cells(Rows.Count, C)).Font.ColorIndex = 0
     .Range(.Cells(1, C), .Cells(Rows.Count, C)).Interior.ColorIndex = 0
     For i = 1 To UBound(Arr)
         T = Arr(i, 1)
         If xD.Exists(T) Then
             m = xD(T)
             .Cells(m, C).Font.ColorIndex = 3
             .Cells(m, C).Interior.ColorIndex = 36
             .Cells(i, C).Font.ColorIndex = 3
             .Cells(i, C).Interior.ColorIndex = 36
         End If
         xD(T) = i
     Next
    .Unprotect Password:="1234"  '保護,密碼自行修改
End With
End Sub
作者: cypd    時間: 2022-7-25 10:21

回復 17# samwang

太神了感謝您了...samwang
所遇之問題瓶頸大致已獲得解決…^^感恩
另外
.Unprotect Password:="1234"  '保護,密碼自行修改(多了 Un 無法進行保護)
已刪除 Un…測試 OK
作者: samwang    時間: 2022-7-25 10:41

回復 18# cypd

另外
.Unprotect Password:="1234"  '保護,密碼自行修改(多了 Un 無法進行保護)
已刪除 Un…測試 OK

>> 不好意思,沒有更新到,如您修改UN要刪除,謝謝
作者: cypd    時間: 2022-7-26 15:05

本帖最後由 cypd 於 2022-7-26 15:16 編輯

回復 19# samwang

煩問  samwang...
關於上述 VBA 作動之後所產生相關疑問 ?

VBA公式作動後
若 C 欄有新數據輸入時會造成 C1 底色不見
若 D 欄有新數據輸入時會造成 D1 底色不見

原保護工作表內之設定失效
(自行設定列格式及使用自動篩選無法使用...恢復預設值)

[attach]35081[/attach]
[attach]35082[/attach]

[attach]35083[/attach]
作者: samwang    時間: 2022-7-26 15:49

回復 20# cypd

VBA公式作動後
若 C 欄有新數據輸入時會造成 C1 底色不見
若 D 欄有新數據輸入時會造成 D1 底色不見
>> 改由第2列開始如下
With Sheets("客戶基本資料")
    .Unprotect Password:="1234"  '解保護,密碼自行修改
     Arr = .Range(.Cells(1, C), .Cells(Rows.Count, C).End(3))
     .Range(.Cells(2, C), .Cells(Rows.Count, C)).Font.ColorIndex = 0
     .Range(.Cells(2, C), .Cells(Rows.Count, C)).Interior.ColorIndex = 0


原保護工作表內之設定失效
(自行設定列格式及使用自動篩選無法使用...恢復預設值)
>> 依您原來的格式修改如下,請再試看看,謝謝
.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingRows:=True, AllowFiltering:=True
'保護,密碼自行修改

作者: cypd    時間: 2022-7-26 23:50

回復 21# samwang

非常感謝您...samwang

針對多次所述問題均能詳細耐心解惑  ^^

獲益良多...工欲善其事,必先利其器(工作上帶來非常便利省時易用)心存感恩




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