アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルの本にA1~A100に入力されている文字列の最終行(途中に空白セルが有っても良い)を
取得する式として下記の計算式が有るのですが、matchの第三引数の-1が良く分かりません。
第一引数"*"は、任意の文字列だと思いますが、
任意の文字列の中で検査値以上の最小の値を検索と言うのはどういうことでしょうか?
最終行の文字列は、最小の値となるのでしょうか?
文字列の大小関係が分かっていないかもしれません。
match("*",$A$1:$A$100,-1)

A 回答 (5件)

MATCH関数でデータ最終行の文字列を検索したいなら



第三引数を「1」にした場合は 最も大きな文字列
第三引数を「-1」にした場合は 最も小さな文字列

を入れる必要があります。このルールを守らなかった場合 範囲ごとに入力した文字列
の位置によって返る値が変わるという 制御不能なバグが発生します。これをバグと呼
んでいいのかそもそもの仕様と呼ぶべきなのかは分かりませんが。

最も大きな文字列というのは「黑」のようなコード番号が最も大きな文字列ではなく
ソートした時に最も下になる文字列のことを指します。「-」や「々」などです。

よって

=MATCH("ーー",$A$1:$A$100)

このように指定する方法をお勧めしています。これも完璧ではありません。
範囲に数式の結果としての空白文字列「""」がないなら

=MATCH("",$A$1:$A$100,-1)

でもいいでしょう。

どっちにしても 理屈が分からない人は絶対使わないこと。 こんなものを本に載せた
人が信じられません。
    • good
    • 0

一応突っ込んでおきますが その式は穴があります。

思った通りの結果が返ら
ない可能性が高いので絶対に使わないように。

何という書籍ですか? 参考までに教えて下さい。
    • good
    • 0

適当に空いている列に


=CHAR(ROW(A30)) と入れて下までコピーしてみて下さい。
=CHAR(ROW(A33)) で !
=CHAR(ROW(A42)) で * が表示されます。
ですので
match("*",$A$1:$A$100,-1)の式は完ぺきではなくて、!のほか、#$%などを含まない場合に有効です。
match(" ",$A$1:$A$100,-1)の方が良いかも。
    • good
    • 0

ワイルドカードとしてアスタリスクを使う場合、第三引数は0とします



>match("*",$A$1:$A$100,-1)
は、A1:A100セルが降順に並んでいて、*または、*に近い一番大きな文字を探します。
数値でなくても並び替えて探す動作は一緒ですが、一般的には使われないと思います。
    • good
    • 0

ヘルプのコピーです。



MATCH

関連項目

指定された照合の型に従って検査範囲内を検索し、検査値と一致する要素の、配列内での相対的な位置を表す数値を返します。検査値で指定したセルに含まれる値ではなく、検査値の範囲内での位置を調べる場合は、その他の検索/行列関数の代わりに、MATCH 関数を利用してください。

書式

MATCH(検査値,検査範囲,照合の型)

検査値 表の中で必要な項目を検索するために使用する値を指定します。

検査値には、実際に検索する値ではなく、検査範囲の中で照合する値を指定します。たとえば、電話番号帳を使ってある人の電話番号を調べるとき、検査値としてその人の氏名を指定しますが、実際に検索するのは電話番号です。

検査値には、数値、文字列、論理値、またはこれらの値に対するセル参照を指定できます。

検査範囲 検査値を含む隣接したセル範囲を指定します。検査範囲は、配列または配列に対するセル参照を指定してもかまいません。

照合の型 -1、0、1 の数値のいずれかを指定します。照合の型には、検査範囲の中で検査値を探す方法を指定します。

照合の型に 1 を指定すると、検査値以下の最大の値が検索されます。このとき検査範囲のデータは、昇順に並べ替えておく必要があります。昇順の並べ替えでは、数値は 1 〜 9、アルファベットは A 〜 Z、かなは "あ" 〜 "ん"、ブール型の値は FALSE から TRUE に配置されます。

照合の型に 0 を指定すると、検査値に一致する値のみが検索の対象となります。このとき検査範囲を並べ替えておく必要はありません。

照合の型に -1 を指定すると、検査値以上の最小の値が検索されます。このとき検査範囲のデータは、降順に並べ替えておく必要があります。降順の並べ替えでは、数値は 9 〜 1、アルファベットは Z 〜 A、かなは "ん" 〜 "あ"、ブール型の値は TRUE から FALSE に配置されます。

照合の型を省略すると、1 を指定したと見なされます。

解説

MATCH 関数では、指定したセルに含まれている値ではなく、検査範囲内にある検査値に一致する値の位置が返されます。たとえば、MATCH("b",{"a","b","c"},0) は 2 を返します。これは、配列 {"a","b","c"} の中での "b" の相対位置を表します。
MATCH 関数では、英字の大文字と小文字は区別されません。
検査値が見つからない場合は、エラー値 #N/A が返されます。
照合の型に 0 を指定し、検査値が文字列の場合、検査値の中で、アスタリスク (*)、疑問符 (?) のワイルドカード文字を使うことができます。ワイルドカード文字のアスタリスクは任意の文字列を表し、疑問符は任意の 1 文字を表します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!