• ベストアンサー

EXCELで可変長の列の先頭と最後尾の値の参照

EXCELで可変長の列の両端の値を取得したいのですが、どのような関数を使えばよいか教えていただけないでしょうか。(offset,vlookupなどのようですが) 例 2 5 3 4 とあった場合、2と4を参照したい。 ただし、上下とも可変長で、 △ 5 3 4 1 のように変化する。 列の先頭のセル、最後尾のセルを参照したい。 よろしくお願いします。

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

  • ベストアンサー
  • banker_U
  • ベストアンサー率21% (17/78)
回答No.2

こんにちは ちょっと変な形ですが考えてみました。 B列に対象のデータ列があるとして、少なくともB1にはデータがない前提です(あればあったで何とかなるけど)。 1.A列が空白列だとします(でなければ空白列を挿入)。 2.A2に「=if(isblank(B2),a1,a1+1)」と入力し、最下行(データの入りうる範囲)までコピー。 3.この状態で、A列には、B列でデータの始まる行の値が1、最下行(たとえばB65536)に、最大値が入る。 4.先頭のセルはVlookup(1,A2:B65536,2,false)   最後尾のセルはVlookup(A65536,a2:B65536,2,false)  で拾えると思います(未検証)。データの形式でこのままでは使えないかもしれませんが、あとは工夫ですよ。

voivoi
質問者

お礼

お二方ともありがとうございました。 ちょっと時間がなかったので、マクロを使うことにしました。 関数を使用する場合はかなり複雑になるようですね。 後学のために関数でもできるように考えてみます。

その他の回答 (1)

  • hana_222
  • ベストアンサー率20% (1/5)
回答No.1

仕事がら、EXCELでデータをよく管理してました。 offsetやvlookupは探す値や場所がわかっていないと使えないと思います。 関数でなくてマクロを駆使しないと難しいかと… セルのデータは1桁であるという条件つきで考えてみましたが… 質問者さんのデータを例として (1)すべてのセルをconcatenate関数で合体する。 『2534』,『△5341』 (2)trim関数でスペースを削除 『2534』,『5341』 (3)left関数、right関数で1文字づつ取る という方法でまとめますと 『=left (trim(concatenate(a1,a2,a3,a4,…)))』 『=right(trim(concatenate(a1,a2,a3,a4,…)))』

関連するQ&A

専門家に質問してみよう