(急:10分)我要用Excel function/macro 寫一個自訂的條件篩選難題,請各位指點。

2007-04-09 6:21 pm






我的Case如下:



我要在第一行search有沒有"Red"字,如有,要將"Red" 字寫入A1格內,否則在A1格輸出空白格
跟著我要將A1格拉落去,然後A2格要懂自動產生結果(即自動會在第二行search有沒有"Red"字,如有,要將"Red" 字自動寫入A2格內,否則在A2格輸出空白格)
我試過用IF function 去做(即if c1=Red or c2=red or ……等),但因為IF function 只可有7層,而我的condition 有30多個,必須要用custom function 或 macro 去做
我希望在A列內用"=function( )"去做,然後在 VBA 內用 function( ) IF then else 或 Case( ) 去做,我試了兩日都不成功,希望各位多多指點,謝謝。

回答 (2)

2007-04-09 9:37 pm
✔ 最佳答案
你的問題, 應可用一條簡單公式(祇有兩對括號), 便可以解決, 幾多個Conditions 都 work
先假設 conditions 是不會超過 100個
在A1 輸入公式 =IF(COUNTIF(C1:CX1,“Red”)>=1,“Red”,“”)
然後將 A1 下拉
注意: Case is not sensitive, 即大小寫視為相同, 即 RED, red, Red 都被視為相同

如需 用 自訂Function, 可用以下VBA
Function FindX(rge As Range, clr) As String
Set xx = rge.Range(Cells(1, 1), Cells(1, 100))
For Each x In xx
If UCase(x) = UCase(clr) Then
FindX = clr
Exit Function
End If
Next
End Function
在A1 輸入公式 =FindX(C1,“Red”)
然後將 A1 下拉
注意: Case is not sensitive, 即大小寫視為相同, 即 RED, red, Red 都被視為相同
如需 Case sensitive, 可將第4行 改為 If x = clr Then, 即除去兩邊的Ucase( )
如B1 的內容是 Red
公式可寫成 =FindX(C1,B$1)
2007-04-09 7:54 pm
Function ReportFind(strText As String, rngSearch As Range) As String

Dim thiscell

ReportFind = " "
For Each thiscell In rngSearch
If thiscell.Text = strText Then
ReportFind = strText
Exit For
End If
Next thiscell

End Function

開個module放上面既code , 咁就create左一個user defined function. 記得save 個file, 否則下次開無左個function

o係 cell A1 打=ReportFind("Red",1:1)

Note: this function is case sensitive

2007-04-09 11:55:29 補充:
=ReportFind("Red",1:1)

2007-04-09 11:56:22 補充:
ref: http://www.excelexcel.com


收錄日期: 2021-04-12 18:55:08
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070409000051KK01045

檢視 Wayback Machine 備份