- 締切済み
セル内の数式中の文字列を検索
セル内に数式が入っている場合、その数式中の文字列を検索する関数がありますか。 例えばB1セルに=Sheet1!K2*Sheet2!K2*Sheet5!K2 B2セルに=Sheet4!K2*Sheet3!K2*Sheet6!K2 D1セルにB1の数式内のSheet2という文字があれば1を表示させ 無ければ0を表示させるというような関数はあるでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
>その数式中の文字列を検索する関数がありますか。 あるかないかで問われればありません。 しかし、ユーザー定義関数(マクロ)を作ることは可能です。 一例です。 Function CALCFIND(RG As Range, ST As String) If RG = "" Then GoTo CALKFIND_END If ST = "" Then GoTo CALKFIND_END CALCFIND = IIf(InStr(1, RG.FormulaLocal, ST) >= 1, 1, 0) CALKFIND_END: End Function 上記を標準モジュールにセットして D1=CALKFIND(B1,"Sheet2")
- imogasi
- ベストアンサー率27% (4737/17069)
関数は「セルの値}!を参照し加工して、セルの値として、それも1つ戻すものです。数式は「セルの値」!の範疇ではないのです。書式もそうです。この基礎的なことを知っておれば、こんな質問は出ないとおもう。 ーー であればセルの数式を、セルの値(文字列)にする方法があれば出来るのか。 =>その通り。 しかし関数ではセルの数式を捕まえられない以上、VBAや「VBAなどを使った、ユーザー関数」を併用しないと不可能です。 ==== 式を別セルに文字列化する。 標準モジュールに Function siki(a) siki = a.Formula End Function ーー 例データ B列 C列 D列 0 =Sheet1!K2+Sheet2!K2 1 0 =Sheet1!K2+Sheet3!K3 0 B列にはC列の形の式が入っているとします。 C1には =siki(B1) というユーザー定義関数を入れますと上記例のようになります。 C2は式を複写します。 D1は =IF(ISERROR(FIND("Sheet2",C1)),0,1)と入れました D2はD1の式を複写しました。 -- 4.0マクロの利用は議論からはずしてます。