• ベストアンサー

【EXCEL】列の最後のセルのデータだけ抽出したい

いつもお世話になっております。 A1 ○○ B1 ○○ C1 ○○ A2 ○○ A3 ○○ B3 ○○ ...といったかんじでセルにバラバラにデータが入っているとします。 列にデータが入っている最終の行だけ取り出したいのです。 上の例だとC1,A2,B3です。 マクロを使わなきゃ無理そうなのですが、アフォなのでわかりません。(T.T) プログラミングの経験がある方、賢い方、教えてくださいませ。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

以下の関数で如何でしょうか。期待値と相違していましたら無視して下さい。 (例)A列の最終行の文字or数値を取り出せます。 =INDEX(A:A,MAX(IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)),IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))) 因みに、列にデータが入っている最終の行ならば、A3,B3,C1では無いでしょうか。

sineminna
質問者

お礼

よくそんな長い式がわかりますね~ つくづく感心します。 Aを1に変えたらできました!

sineminna
質問者

補足

すいません。説明が間違っていました。 行の最後の列のデータです。 でも、教えていただいた関数をさわったらいけそうですね。 がんばります。

その他の回答 (2)

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.3

こんちは =INDEX(1:1,MAX(INDEX(COLUMN(1:1)*(NOT(ISBLANK(1:1))),))) とか

sineminna
質問者

お礼

会社のPCに詳しい方に聞いたらマクロを使って関数を作ったらいいじゃんと言われました。 モジュールを作成して Public Function PICKUP(Rng As Range) As String Dim BKString As String Dim DAT As Variant BKString = "" DAT = "" For Each DAT In Rng If DAT <> "" Then BKString = DAT End If Next PICKUP = BKString End Function これでPICUPという関数ができるので=PICUP(A1:Z1)で出るそうです。 奥が深いですね。 皆様ありがとうございました。

sineminna
質問者

補足

すごすぎます。 そんな難しい式、なぜわかるんだ~!!

回答No.2

例: A1 ○○ B1 ○○ C1 ○○ D1 空白 E1 空白 A2 ○○ B2 空白 C2 空白 D2 空白 E2 空白 A3 ○○ B3 ○○ C3 空白 D3 空白 E3 空白 の状態で行1の最後のデータを取得 =INDEX($A$1:$E$3,CELL("row",A1:E1),COUNTA(A1:E1)) こんな感じでどうでしょ? 第1パラメーター:データが入ってる領域を絶対アドレスで指定 第2パラメーター:その行の行番号 第3パラメーター:その行の空白セルでないデータの数 注意:データが左から摘めてあり残りは空白セルの場合のみ

sineminna
質問者

お礼

xyzさんのおっしゃるとおりの式でもできました。 どうもありがとうございます。

sineminna
質問者

補足

いつも思うんですが、なんでそんなひらめきが出るんでしょう? 皆さん頭よすぎです。(私が悪いだけですが) いろいろなやり方があるんですね。

関連するQ&A