- 締切済み
セル番地を返してくれる関数
A B 1 日付 個数 2 1/11 3 3 1/12 2 4 1/13 6 5 1/14 4 のような表があったとします。 そして、1/12日の個数は「2」ですよね。 この2を返すのではなく、 1/12日の個数の「セル番地」を返す関数が知りたいのです。 実際はもっと複雑な式らしく、セル番地が必要なのだそうです。 (私ではない人がやっているので、詳しくはわかりませんが・・・) LOOKUPのようなカンジでセル番地を返す関数ってありますか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- zinchan
- ベストアンサー率49% (97/197)
No.4では勘違いしてしまっておりました。すみません。訂正です。ただ、その方には説明にはなるでしょう。上記ご質問に対するネストは、日付範囲がA2:A5にあり、D2に探したい日付の入力セルがあった場合です。MATCH関数で範囲内の該当する値が、上から何行目かを探し、それをADDRESS関数で指定してあげれば、答えになります。MACHT関数の最後の0は、該当する値と一致したもののみを検索するように指定する様式を示します。 =ADDRESS(MATCH(D2,A2:A5,0),2,4) よって、No.3のcomv氏があげた回答が正解です。よけいなことをしてしまいました。せっかくなので、日付が更新され入力欄が増加することを考え、また、comv氏のご指摘に則したネストを追加してみました。 =IF(ISNA(ADDRESS(MATCH(D2,A:A,0),2,4))=TRUE,"該当するものがありません",ADDRESS(MATCH(D2,A:A,0),2,4)) どうでしょうか
- zinchan
- ベストアンサー率49% (97/197)
その方は、場合によって参照範囲が変化する式(ネスト)を作りたいのでしょうね。 セル番地に関する関数は、私が知っているものでは3つあります。 1) =CELL("address",A1:D1) 2) =ADDRESS(1,4,1) 3) =INDIRECT(E5,TRUE) 1)は、選択したセル範囲(単独セルでも可)のアドレスを表示しなさいという関数で、答えはセル範囲のうち、最も左上のセルの番地を返します。(ここでは$A$1) 2)は、行の上から何番目、列の左から何番目かを指定し、セルの参照形式を番号で指定(1:絶対参照、2:行を絶対参照で列を相対参照、3:略、4:相対参照)すると、指定した参照位置のセル番地を表示します。(ここでは行が1番目、列が4番目なのでD1を、絶対参照で返す指定ですから、$D$1) 3)は、単独ではあまり意味がないが、式中に組み込む(ネスト)と便利な関数で、指定したセル番地に書いてあるセル番地もしくは参照範囲の内容を表示します。(ここではE5に記されたセル番地の内容を返します) 例えば、=INDIRECT("B"&$A$5)とあって、A5に3と書いてあれば、B3セルの内容を表示します。また、A5に4と書いてあれば、B4セルの内容を表示します。B3に卵と書いてあれば卵と表示され、B4セルに数値が入っていればその数値を表示します。 また、この関数は、セル参照が変わる場合がある式(ネスト)を作るときに最適です。1)、2)は単独のセル番地しか表示することができません。そこで、2)の式を、C5セルに=ADDRESS(1,1,4)としたら、A1を返し、C6セルに=ADDRESS(1,4,4)としたらD1を返しますね。E5セルに=CONCATENATE(C5,":",C6)とあると、E5セルにはA1:D1と表示されます。そこでこの関数の出番です。単独で使っても意味ないので、他の関数と組み合わせてネストを作ってみましょう。例えば, =AVERAGE(INDIRECT(E5,TRUE))とあれば、E5にはA1:D1とあるので、A1からD1までのセルを参照したことになります。A1からD1まで順に1,2,3,4と数値が入っていれば、答えは2.5と表示されます。=sum(INDIRECT(E5,TRUE))なら、10と表示されます。=count(INDIRECT(E5,TRUE))なら、4とでます。C6セルの=ADDRESS(1,4,4)の列番号を指定する数値が、条件式で変わるようにしておけば、参照範囲を条件別に変えることができるようになります。C6セルの式に、=ADDRESS(IF(COUNT(A:A)>1,count(a:a),1),4,1)としてみると、A列に2つ以上のデータが入っていたらA列に入っているデータの数分の行数を指定したことになり、A2に数値が入っていたら、答えはD2となります。よって、E5セルはA1:D2となり、=count(INDIRECT(E5,TRUE))の答えは、A1:D2の範囲内にある数値データの個数を返してくれます。
- comv
- ベストアンサー率52% (322/612)
こんにちは! 少々意味を理解し切れていないのですが 例えば C1に 1/12 とあれば =ADDRESS(MATCH(C1,A1:A5,0),2) もしくは ="B"&MATCH(C1,A1:A5,0) 検索値が無い時のエラー回避は別途(IF(ISNA()等)必要です
- k_eba
- ベストアンサー率39% (813/2055)
=cell("col",対象セル) =cell("row",対象セル) で良いと思います 詳しくは、イルカさんに聞いて見てください。(^○^) 参考になれば幸いです
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 試してないですが、セルのRowプロパティとColumnプロパティで取得出来るのではないでしょうか。 では。