• ベストアンサー

Excel関数を使って、対象文字が検索文字列でn番目に出現した位置を知りたい

Wendy02の回答

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんにちは。Wendy02 です。 H1 を規定セルとするなら、このようになります。 =ADDRESS([行数],MATCH([何番目],INDEX(COUNTIF(OFFSET($H$1,[行数]-1,,,COLUMN($A$1:$G$1)),[検索値]),,),0),4) このような仕組みになっています。今の段階では、一行の検索しか出来ません。 COLUMN($A$1:$G$1)の部分は、ダミーで数値だけを取り出すために行われていますので、基本的には変更しません。 >例えばB5からH5のような範囲です。 範囲というのは、どのように数えていったらよいのか、今は、考えておりません。 したがって、[行数]は、1行目、2行目というように入れていきます。 序数というのは、[何番目]ということです。 OFFSET は、元の式は、$A$1 を規定セルとして、規定行、規定列を0としますので、1を入れると、2行目になってしまいます。したがって、[行数-1] となっています。 COUNTIFで、左から、[検索値] を1つずつ数えていくと、数が加算されていきます。その加算された最初の数を、MATCH関数で取り出し、それは、何列目か、という考え方をしています。 これで、お分かりになられましたでしょうか?

mochiokun
質問者

お礼

本当にご丁寧に教えて頂きまして有難うございました。 教えて頂いた内容で実現できました! COLUMN($A$1:$G$1)の部分を検索開始位置に合わせて変えてしまうとダメなんですね。 恐らくVBAでやればもっと便利な関数やアルゴリズムを使って簡単にできると思いますが、今回はあえて関数のみで複雑な処理をしてみようと思い質問させて頂きました。 当初は、割とありがちなケースと思い、もっと簡単にできると思いきや、結果的にとても苦労してしまいました。アドバイス頂きました方にはこの場を持って御礼申し上げます。 有難うございました。

関連するQ&A

  • 文字列検索で・・・

    Instr関数で文字列の存在チェックを行っています。 この場合、変数indexに1が入った場合 Instr("aaa1_a.sql","index") <----- この場合問題はないのですが、 Instr("aaa12_a.sql","index") <-----となる場合も値がとれてしまうので どうしたものかと困っています。 うまく検索させる方法はないでしょうか? ちなみに検索する文字列には aaa数字.sql aaa数字_a.sql aaa数字_b.sql というパターンがあります。 どなたかよきアドバイスをいただけませんでしょうか? よろしくお願い致します。

  • 文字列検索で

    よろしくお願いします。 文字列検索instr関数で、特定文字(スペース)でない文字を検索したいのですが、どのようにしたらいいですか? instr関数では、できないのでしょうか? たとえば、 文字列" osietegoo "  →  3 文字列"    situmon"  →  7 スペースでない文字が出現する位置を知りたいです。 instr(文字列,"o")ではなく、" "ではない、、、としたいのですが、できますか?

  • 文字列検索しセルの位置が知りたい

    指定範囲内で文字列を検索し、見つかったセルの行番号、列番号を知りたいのです。 マクロでなく関数で出来るでしょうか?

  • 文字列検索

    文字列検索 テキストファイルの検索を行いたいです. 下記のようなサンプルファイルでfooを検索し, 含まれるならマッチした個数,含まれないならnilを返す関数を作りたいです. mecabを用いて形態素解析を1行ずつしようかと思ったんですが, 大量のファイルを処理する予定なので,オーバヘッドが気になります. 関数でgrepがあるみたいですが,マッチした行しか返されません. 標準関数で1行ずつよみこんで,1行のなかでマッチした回数を返す関数はありますか? --sample.txt-- foo foo bar bar foo hoge,hoge,hoge,hoge hage-hage-hage-foo -- end --

    • ベストアンサー
    • Ruby
  • 表のばらばらの文字列を1列にまとめたい 関数

    添付の左の表を右の表にしたいです。 (1)左の表には数式が入っていて、この他にもう一つある表のデータに該当すると1列ごとにSMとかNPとか表示されるようになっています。 (2)この左の表は実際には136列あるので、結果を印刷すると一枚に収まりきらないのです。なので、右の表のように、1列に表示したいのです。 (3)1行のうち、2個以上文字列が入ることもありますが、その可能性は低いので、とりあえず1行に1個ずつ出現すると考えてもらっていいです。(2個以上文字列が出現する場合も分かれば教えてください。) (4)関数でできませんか? またはマクロでもいいです。

  • VBA/FIND関数を使っての先頭文字列の検索方法

    エクセルVBAにてFIND関数を使って、 文字列検索⇒コピー&ペーストのマクロを作成しているのですが、 どうしても、先頭文字列から検索をする方法がわかりません。 たとえば、 あいうえお いうえおあ おあいうえ えおあいう という文字列から「あいう*」を検索したい場合、 1行目だけを抽出したいのですが、 1,3,4行目が抽出されてしまいます。 find関数では先頭文字からの検索はできないのでしょうか? もし、不可能な場合、先頭文字からの検索を行うにはどのように行えばよいでしょうか? アドバイス、よろしくお願いいたします。

  • 表のばらばらの文字列をまとめるマクロ 関数

    以前、同じ内容の質問を聞いたのですが、少し条件を変えて質問です。 (1)左の表には数式が入っていて、この他にもう一つある表のデータに該当すると1列ごとにSMとかNPとか表示されるようになっています。 (2)この左の表は実際には136列あるので、結果を印刷すると一枚に収まりきらないのです。なので、右の表のように、最短の列に表示したいのです。 (3)この例ではたまたま1行に1個ずつしか文字列が入ってないので右の表は1列ですが、1行に付き2個以上文字列が入ることもあります。5個以上はほとんどないです。 (4)関数でできませんか? またはマクロでもいいです。 以前、回答でいただいた関数は =IFERROR(HLOOKUP("*?",$A1:$D1,1,FALSE),"") 又は =IF(COUNTIF($A1:$D1,"*?"),HLOOKUP("*?",$A1:$D1,1,FALSE),"") でしたが、これだと1行につき1個文字列があるときのみ可能です。 1行に付き2個以上文字列がある場合に、例えば空欄を削除して左に詰めるような感じでマクロでできないでしょうか?

  • エクセルのLOOKUP関数について

    LOOKUP関数とVLOOKUP関数はどう違うのでしょうか?わかりやすく教えて下さい。(使用例など)  文字だけの表(2行)から検索したんですが、VLOOKUP関数は検索できたんですが、LOOKUP関数だと間違った検索になってしまうんです‥。

  • Excel2010 SUM関数の参照列を指定

    いつもお世話になっております。 文字で説明しにくく、分かりにくい表現になっておりすみません。。 Excel2010 で年度(4月~3月)の集計表があり、最右列へSUM関数が入っています。 様々な項目が行方向に複数行あり、全て最右列へはSUM関数が入っています。 この各月の数字は日々変化していき、今月中は今月中の数字だけが変化していくとは限らず、 1年間のうちどの月の数値が日々変化するかは分かりません。 毎月、前月までの合計を出しておきたい為、SUM関数が入っている列は、毎月月初に 参照列が4月~前月までになるように修正をしています。 毎月置換で数式内のアルファベットを変更したりしていますが、複数Sheetに渡り表が続いていたり、 M列の時はSUM関数の"M"が"SUN"になってしまったり。。うまくいなかいことがあります。 この為、参照列のアルファベットを同じファイル内のどこかのセルで指定して参照させることはできないかと思っています。 例えば、こんな感じの参照表を作成し、、 A  B   A列 B列 1行 4月 E 2行 5月 F 3行  6月 G 4行  7月 H 5行  8月 I 6行 9月 J 7行 10月 M 8行 11月 N 20行 S20へSUM関数 9月選択→10月選択に変更すると、SUM関数内の<=SUM(E20:J20)>→<=SUM(E20:M20)> に変更できるような。 SUM関数が入っているセルは全て「J」→「M」に一括で変更できるようにしたいです。 分かりにくくすみません。質問あれば補足します。

  • Excel関数で”○”印を検索

    連続したセル(列、行)に”○”印があるセルの数を検索したい。 具体的に言いますと! Excelの表で、行事に参加する人は”○”、不参加は”×”印で表された表があります。 この表の中に、”○”が幾つあるかを検索する、関数は何がよいか教えてください。