• 締切済み

セル内の数式中の文字列を検索

セル内に数式が入っている場合、その数式中の文字列を検索する関数がありますか。 例えばB1セルに=Sheet1!K2*Sheet2!K2*Sheet5!K2 B2セルに=Sheet4!K2*Sheet3!K2*Sheet6!K2 D1セルにB1の数式内のSheet2という文字があれば1を表示させ    無ければ0を表示させるというような関数はあるでしょうか。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>その数式中の文字列を検索する関数がありますか。 あるかないかで問われればありません。 しかし、ユーザー定義関数(マクロ)を作ることは可能です。 一例です。 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/17068)
回答No.1

関数は「セルの値}!を参照し加工して、セルの値として、それも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マクロの利用は議論からはずしてます。

関連するQ&A

  • 数式を表している文字列を数式にする?方法

    表現が下手で申し訳ございませんが、教えてください。 ある特殊なリンク数式があります。数式の中ほどには数値部分があります。 その数値部分の前後で分割して(文字列化)、数値部分を変化させた後、元の数式にもどしたいのですが、単純に結合すれば、頭に=をつけても数式として認識されません。 方法はありますでしょうか? 例/ セル F1 に入っている数式  =IF(A1="あ","="&C1&B1&D1,"") セル B1 には不特定の数値が入力される。(例えば200411) セル C1 と D1 には元々一つの数式であったものを三分割した左側と右側を文字列として納めてある。 このままだと、セル A1 に「あ」が入力された場合、 セル F1 には、=「C1」0411「D1」といういように文字列として表示されます。 F1 をコピーして G1 に値貼り付けして、G1をダブルクリックした後、他セルを選択すると、数式になり、リンク値を正しく表示します。この作業を毎回行うのは面倒です。 F1 のみで処理する必要はないのですが、G1では完了させたいのです。 =Value(F1) ではダメでした。

  • 複数セルから文字列を検索して・・・

    どう検索していいのかわからなかったので質問します。 複数のセルから特定の文字列を検索して、該当したセルに対応するB列の数字の合計を関数によって出したいです。 例えば画像を例にすると、A列で"()"という文字列が入っているセルがいくつかあります。 これらのセルに対応するB列の数字の合計を出したいです。 "()"は必ず文字列の末尾にくることとします。 回答よろしくお願いします。

  • エクセルで、文字列を検索し、その文字を含んだセルの内容を別のシートに表示する。

    SHEET1のA列に文字列を含むデータがあります。 これをデータベースとして、 SHEET2のセルA1に「ある特定の文字列」を含むSHEET1のセルの内容を表示させたい場合、どのような関数を使ったら良いでしょうか。 具体的には、SHEET1に特許明細の各項目が、A1~A100くらいまであります。 各項目には、例えば、出願人、出願日、効果、請求項などの文字列が含まれます。 そこでSHEET2のA1に「請求項」と入力すると「請求項」という文字列を検索し、その文字列を含んだセルの内容を表示させたいのです。そのセルは一つとは限りません。 以上のような事は、関数で可能でしょうか。

  • EXCEL 数式が入った空白セルを数える

    毎度お世話になっています。 質問の内容ですが、例えば下記のようなシートがあるとします。 セルB1、セルC1、セルD1:手入力セル セルA1:数式「=IF(B1="","",B1+C1)」 セルA2:文字列 セルA3:数式「=IF(D1="","",D1*0.1)」 セルA4:文字列 セルA5:A1+A3の計算結果を表示 (※なお、セルA2、A4は数値が入らない) というような場合において、 ●セルB1、C1、D1になにも入力されていない場合、セルA5が空白となる。 ●セルB1、C1にのみ数値が入力されている場合、セルA5の計算結果がセルA1の値のみ。 ●セルD1にのみ数値が入力されている場合も上記と同様に計算結果が表示される。 以上の条件を満たす数式をセルA5に入力したいのですが、 COUNTBLANKは数式が入っている場合には使えず、COUNTAの場合だとセルA1、A3のどちらにも数値が入った場合に表示される、といった数式になります。 IFをいくつも使えば可能とは思いますが、もう少し単純に数式を作れたらと思い質問をさせて頂きました。 よろしければ御回答宜しくお願い致します。 (内容を訂正したため、いったん質問を削除しました。もし御回答中の方が居ましたら申し訳ありませんでした。)

  • excelで、数式がそのまま文字として張り付いてしまう!

    Sheet2の1行目のセルに A1には=Sheet1!A1、B1には=Sheet1!C1、C1にはSheet1!E1 というSheet1の1列おきを引っ張ってくるわりと簡単な数式を入れました。 A~Cはうまく引っ張ってきたのですが、 D列を新しく作ろうと思い、A1のセルをコピペして、 =Sheet1!A1のAをGに変えたら、 D1のセルに数式が「=Sheet1!G1」というふうに そのまま文字として張り付いてしまいました。 これはイカンと思い、D1のセルに直接数式を打ち込んだりしましたが、 状況は変わりません。 ちょっと困っています。 よろしくお願いします。

  • セルに数式が入ってるかどうかを取得する関数は?

    C1には、=SUM(A1:B1) C2には、0 が入力されています。 実際、A1:B1の値は0なので、 C1もC2も0が表示されています。 D列で、ちゃんとC列にsum関数が入ってるか調べてたいのですが =COUNTIF(C1,"*sum*") をオートフィルしても、0が返ります。 C3に「sum」と言う文字列を入れて、=COUNTIF(C3,"*sum*")をしたら 1が返りました。 COUNTIF関数は文字列は認識しますが数式は認識しないようです。 このような場合、セルに数式が入ってるかを取得する方法はありますか?

  • excelで文字列を検索する関数を教えてください。

    いつもお世話になります。 エクセルの関数で、シートAのセルA1に入っている文字列をシートBのC列から探し出し、同じ文字列があればTrueをなければFalseを返す関数を教えてください。 わからないながらも色々調べてみたのですが、検索にはVLOOKUPがよく使われているようですが、シートBのC列は、データの並べ替えができないので、VLOOKUPは、使えないのです。 よろしくお願いします。

  • EXCELで計算式を文字列として抜き出す?

    excelにて、計算式を文字列として他のセルに表す方法はありますか? 数箇所だったら数式を直接コピーすればできるのですが、行が多いので関数でひとつ作ってそれを下の行へコピーすれば楽にできるのかなと思いまして・・ 例えば、  C1セルに「=A1+B1」という計算式が入っているとして、  D1セルに「=A1+B1」と式自体を表示させたい。 という場合に。D1に関数をいれればいいとかありますか?

  • Excel 複数セルから文字列の検索、表示

    エクセル初心者です。 過去のものを探しては見ましたが、うまくキーワードを見つけられなかったので 質問させてください。 リストで次のようなものがあるとします。  A   B  C  D  E  F  G 1○ 12 45 - 98 - 2■ - - 12 - 06 3◇ 35 12 01 99 - 4× - - - - 12 5☆ 08 61 20 12 - このリストで各行ごとにB~F列のセルにある「1」で始まる文字列を検索して 該当する文字列をG列に表示する方法はありますでしょうか? 関数とかVBAについては???なので、わかり易くお教え頂けると助かります。 よろしくお願いいたします。

  • エクセル 複数条件で検索する数式を教えてください。

    社員の作業時間入力シートが2つあり、それぞれに入力しているため、入力ミスによる誤差が生じます。それをチェックしています。 検索条件が複数になる場合の計算式を教えてください。 [sheet1]   A   B   C   D  E 1 社員CD 日付  作業時間1 作業時間2  誤差 2 1000 2008/1/1   3.5  ここに数式   =C2-D2 3 1000 2008/1/2  2.5    数式    =C3-D3 4 1001 2008/1/1   5.0    数式    =C4-D4 [sheet2]   A   B   C    1 社員CD 日付  作業時間2 2 1000 2008/1/1  3.0 3 1000 2008/1/3   1.5 4 1001 2008/1/1  5.5 sheet1のD列にsheet2のC列を表示させたいのですが、 条件はA列とB列が一致するものになります。 A・B列が文字列ではないため、1列挿入して=A2&B2列を作成することができませんでした。 D列に数式をいれる事で一発で表示させる方法を教えてください。

専門家に質問してみよう