• ベストアンサー

=MATCH("*?",A1:A10&"",0)

ずばり!タイトルの関数の内容を教えてください。 A1:A10の1列の表があります A1~A3はブランクで、A4に数字が入った場合 「4」が表示されます A1~A10の間で、どこに数字が入力されたかを表示する関数のようです。 『"*?"』この部分と、『A1:A10&""』この部分が、どうしてもわかりません 前に教えてgooで教えてもらった関数なのです どうか、教えてください。よろしくお願いします。 ちなみに、そのときの質問です↓ http://oshiete1.goo.ne.jp/kotaeru.php3?q=720308

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 張本人なので説明します。 まず、この数式は配列数式です。 配列数式については、以下のページを熟読して下さい。 http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm で、MATCH関数の第2引数「A1:A10&""」は、 {A1&""、A2&""、A3&""・・・A10&""} という各セルの値の末尾に「""」を付けた範囲を表しています。 そして、末尾に「""」を付けることで、データを文字列に変換しているのです。 次にMATCH関数の第1引数の「"*?"」ですが、「*」と「?」はワイルドカードというです。 ワイルドカードは、文字列を検索する時の不特定の値を検索するための文字です。 「*」は任意の文字列です。 つまり、検索範囲に何か文字列が入っていれば、ヒットします。 この場合は、「""」も長さ0の文字列と判断してヒットします。 試しに質問欄の数式から"?"を除いてみて下さい。 範囲内のどこに何を入力しても、「1」になるはずです。 これは範囲の先頭の「A1&""」の「""」がヒットしてしまうからです。 これを回避するために、「?」も付けています。 「?」は、任意の文字1文字です。 検索範囲に何か文字が1文字だけ入っているとヒットします。 そうすると、両方合わせた「*?」は、 「任意の文字列」+「任意の1文字」 を検索します。 つまり、文字が1文字でも入っていればヒットするわけです。 「""」は1文字とは見なされないので、「""」だけではヒットせず、 例えば「A1&""」なら、A1に何か1文字以上の文字列が入力されていないと、ヒットしません。 もう一度戻ると、ワイルドカードによる検索は、文字列しか出来ません。 したがって、MATCH関数の第2引数の検索範囲に「""」を付けて文字列に変換しているわけです。 それから、MATCH関数の第3引数に「0」を指定しているので、第2引数の範囲を先頭から検索して、初めてヒットした位置を返します。 ちなみに、A1:A10に1つもデータが入力されていなければ、「#N/A」のエラーになります。 以上で、分かりましたでしょうか?

参考URL:
http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm
kurulin
質問者

お礼

こんにちわ!いつもすばやく的確な回答をありがとうございます! 未熟者なもので、すぐに「あぁ!なるほど!」とまでは行きませんが、理解のとっかかりが出来ました。 これからもう一度、作った表とこの説明を見比べながら勉強します(^-^) 参考URLも、ありがとうございました!お気に入りに入れてよく調べてみます!! また何かあったら、よろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ある列に「1桁の数字」が「初出する行」(番号)を出すやり方を配列数式を使わず考えてみました。何か似ていませんでしょうか。両者比べてみてください。 もしB列に、下記のC列に当たるところに、=IF(B1="",0,1)と入れて、下へ複写すれば良いと思います。 (データ) B列B1:B10に (B) 2 3 (B) as as df g 4 12 (B)は空白(DELキー押し状態) 余分な列1れつC列使い、C1に =COUNTIF($B$1:B1,"<"&"10")()内後半は"<10"でも可。 下へC1をC2からC10へ複写。C1:C10は 0 1 2 2 2 2 2 2 3 3となります。 初出行を出したいセルに =MATCH(1,C1:C10,0)と入れます。この場合2です。 B列の内容をいろいろ変えて試してみてください。 配列数式を使う方法は余分な列を使わない点で、すっきりします。

kurulin
質問者

お礼

アドバイスありがとうございました! 今回、タイトルの関数を使ったのは、1行でなく30行くらいの表だったので、1行ごとにimogasiさんの教えてくれた方法を取る事ができませんですが、他の機会に流用させていただきます!どうもありがとうございました。

関連するQ&A

  • エクセルの数式で、COUNTIF(A1:A100,">""") 

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2224824 の関連質問です。 表A1:A100にある、各セル内の数式で求められた計算結果が文字列の場合、その数を調べるには、 =COUNTIF(A1:A100,">""") で、各セルの計算式の答えが "" 以外の文字列の数を返してくれるようです。(数値や空白セルはカウントされません。) 非常に便利なのですが、ちょっと腑に落ちないのは、  >""  って、""より大きいということですよね? しかし文字列は数字とちがい大小はないのではないでしょうか? もう一点疑問です。 ためしに、=COUNTIF(A1:A100,">=""")  としてみました。 今度は、  >=""  ですから、""も含むということになるはずですよね? ところが答えが  ""  となるものをカウントしません。 不思議でたまりません。 よろしくお願いします。

  • 続:123,156,789.012345を3けたずつにわけて、違うセルに飛ばす関数

    昨日上記質問をし、下記にて回答を頂いたものです。(ありがとうございました。) http://oshiete1.goo.ne.jp/kotaeru.php3?q=1696559 =TRIM(MID(TEXT($A1*10^6,"???????????????"),(COLUMN()-2)*3+1,3)) との回答を頂き応用をしてみたのでが、未熟なもので上手く行きません。恥ずかしいです。。。 私は応用として、仮に「123,156,789.012345」等・・、と飛ばしたい数字をG列に入れ、関数を =TRIM(MID(TEXT($G1*10^6,"???????????????"),(COLUMN()-2)*3+1,3)) とG列絶対参照に設定して、H列~コピーすれば良いのだなと思い込んだのですが、上手く行かないんです。 やり方がまずい可能性はかなり大きいのですが(´;ェ;`)、元となる数字がどの列に来ても、3桁ずつに分割して表示するには、教えて頂いた関数の、どことどこを変えれば良いのでしょうか?もしくは、他の関数を使わないといけないのでしょうか? 説明が下手ですみません。宜しくお願いいたします。

  • エクセル2002で取り込むWEB上の表

    エクセル2002以降のバージョンではWEB上の任意の表(テーブル)を取り込むことができるようになりました。セルに入力されたURLを変数として表を取得できると思いました。下記のような質問もあったのですが、どうしてもうまくいきません。 1 A1に取得したい表のあるURLが入力されている 2 A10から下の部分に表の内容を表示させる とした場合どのようにVBAを組んだらよいのでしょうか?2002からの新機能なのでとても気になっています。 【参考にした質問】 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1043635

  • 配列数式について教えてください

    ここでエクセルでの文字列の検索方法をさがしていたらさきほど、ちょうど良くこのような配列数式をみつけました。 =IF(A1="","",MIN(IF(ISNA(MATCH("*"&$H$1:$H$9,A1,0)),10,$I$1:$I$9))) A1セルに、H1からH9の表にあるどれかの文字列を含んだ文字列をいれると対応するI1からI9の表の値を表示するものです。 使われているMINやISNAやMATCH関数はわかるつもりですが、組み合わせるとなんでこんなことができるのか、ぜんぜんわかりません。どなたか解説していただけないでしょうか? http://oshiete1.goo.ne.jp/kotaeru.php3?q=653775

  • Excel の =TEXT()関数の怪?

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2004201 配下の[No.2 EL-SUR]さんの回答中の =TEXT(A1,"00-00-00") あるいは =TEXT(A1,"0000-00-00") の部分は、私にとって“目から鱗”的なものでした。つまり、セル A1 が数値あるいは文字列の 20060121 であるとき、当該関数は 2006-01-21 なる文字列を返して来ることが。 でも当該関数を =TEXT(A1,"0000/00/00") にする(「-」を「/」に変更)とエラー #VALUE! になるのは何故なのでしょう?2006/01/21 となることを期待していたのですが… 気になって眠れないのです(^_^)

  • 三四郎

    ジャストホーム2の三四郎を使ってます。 今日この質問を見て思ったのですが、 説明書によると 関数の項目を開いて出てきた関数しか使用出来ない と書いてあったのですが 下のサイトにある =VLOOKUP(A1,$E$1:$F$3,2) これは項目から出てきませんでしたが直接入力したところ568481の説明道理出来ました。 今まで請求書で項目別の単価を、いちいち単価表かを見て入力していたのが、その煩わしさから解放されました。 他にももっと使える物があるのではないかと思いますが、何処かに表計算で使える関数の一覧などご存じ有りませんか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=568481

  • 今の日本の選択  

    お世話になっております。 サリジェンヌです。 今、日本は重要な局面にいると思います。 今後の日本は弱者切り捨て型社会にすべきか、 国民皆を導いていくべきか皆様のご意見を伺いたく思います。また、前者の場合は、その方向に進んでいるように見えますが、後者の方向に針路変更したい場合はどうしたらよいとお考えでしょうか? 因みにサリジェンヌは後者派です(↓頑張ってきました(参考までに)) http://oshiete1.goo.ne.jp/kotaeru.php3?q=2254612 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2248694 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2245746 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2265951 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2265951 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2126838

  • ページAにアクセスしないとページBにアクセスできない・・・

    例えば、B.htmlと言うページがあって、まずA.htmlにアクセスしてからでないとB.htmlにアクセスできないようにするPHPを探しています。 過去にも同じような質問があったので試してみたのですが、できませんでした。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2134159 ↑これです。 もし分かる方がいましたら教えてください。 よろしくお願いします。

    • 締切済み
    • PHP
  • 何かに一生懸命な人って魅力的なんですか?

     男子高校生です 以前ここで質問しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2436141 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2437751 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2441722  恋の悩みに関するQ&Aを検索したら、「何かに一生懸命な男の人は輝いてる、魅力的」という書き込みをたくさん見ました。本当にそうなんですか?  校内のカップルを見る限りそうは思えないです。僕にも夢中になっていることはあります。でも好きな人に振り向いてもらえそうも無いです。  夢中になっているのは、「これで無ければだめ」「こういう物のほうがいい」っていうのあるんですか?  

  • エクセルの質問追加ですぅ。。

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=544954 以前の質問で一旦解決をしたのですが、 COUNTIFでカウントされた1個横の列には数字がありまして。 この平均値を出したいのです。 平均値の式なんて分かるのですが、 COUNTIFのさらに1個横の列の平均なんてできますか? もしくは代替案的なものとか無いですか?

専門家に質問してみよう