あなたの映画力を試せる!POPLETA映画検定(無料) >>

初めまして、よろしくお願いします。
     A  B  C  
1    赤  青  黄  
2 
3   
4    1  3  2  
5    9  1  3  
・    ・  ・  ・  
・    ・  ・  ・   
112  4  6  1  
113  7  7  5  
114     9  1    
115        2  
116        0    

 という表があります。
 この表の最後尾はA113ですので、B113の7を、C113の5の値を抜き出す関数式を探しております。応用が利くように、最後尾行113のみではなく、113±αの値を抜き出す補足をいただければ大変助かります。よろしくお願いします。

A 回答 (4件)

A列最後尾=INDEX(A$2:A$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1),1)


B列最後尾=INDEX(B$2:B$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1),1)
C列最後尾=INDEX(C$2:C$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1),1)

A列最後尾±α=INDEX(A$2:A$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1)±α,1)
B列最後尾±α=INDEX(B$2:B$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1)±α,1)
C列最後尾±α=INDEX(C$2:C$10000,MATCH(MAX($A$2:$A$10000)+1,$A$2:$A$10000,1)±α,1)
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。このやり方でうまくできました。ありがとうございます。

お礼日時:2011/03/13 22:31

No.3です!


前回は大きな勘違いをしていました。
A列の最終行の各列のデータを表示したい!ということですよね?

数式を
=INDEX(A$1:A$1000,MAX(IF($A$1:$A$1000<>"",ROW($A$1:$A$1000))))
(前回同様配列数式です)
に変更してください。

それとVBAも変わってきます。
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので↓のコードをコピー&ペーストしてマクロ実行です。
(Alt+F8キー → マクロ → マクロ実行)

Sub test() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
i = ws1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To ws1.UsedRange.Columns.Count
ws2.Cells(1, j) = ws1.Cells(i, j)
Next j
End Sub 'この行まで

こんな感じです。

何度も失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。回答を訂正していただき、VBAまで載せていただき、大変勉強になりました。参考にさせていただきたいと思います。

お礼日時:2011/03/13 22:37

こんばんは!


一例です。
同Sheetに表示する場合の数式です。

表示したいセルに
=INDEX(A$1:A$1000,MAX(IF(A$1:A$1000<>"",ROW($A$1:$A$1000))))
(とりあえず1000行目までデータがあっても対応できるようにしています。)

これは配列数式になってしまいますので、Shift+Ctrlキーを押しながらEnterキーで確定!
それをデータ量だけ列方向にオートフィルでコピーではどうでしょうか?

他の方法としてはVBAになってしまいますが・・・
Sheet1の各列の最後尾のデータをSheet2の1行目に表示する方法です。

Sub test() 'この行から
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
For j = 1 To ws1.UsedRange.Columns.Count
ws2.Cells(1, j) = ws1.Cells(Rows.Count, j).End(xlUp)
'Sheet2の2行目に表示する場合は↑の行の Ws.Cells(1,j) の部分を Ws.Cells(2,j) に変更!
Next j
End Sub 'この行まで

こんな感じではどうでしょうか?m(__)m
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。勉強させていただきたいと思います。

お礼日時:2011/03/13 22:32

=INDEX(B:B,MATCH(MAX($A:$A)+1,$A:$A,1))


=IF(COUNT($A:$A),INDEX(C:C,MATCH(MAX($A:$A)+1,$A:$A,1)),"")
などで。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。うまくできました、大変助かりました。

お礼日時:2011/03/13 22:30

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルの関数(最後の値を返す)

A1からJ65までの範囲のなかで (計算式などが入ってるセルも含まれてます)
J列の最後に表示されている値を返したいのですが どんな計算式をしていいか 調べてもわからず困っています。

J35のときもあればj40のときもあります。
ちなみにJ列にはすべて 計算式がはいってます。
その計算結果が表示されているセルと空白のセルがあります。
(J1からJ40まで値表示J41からしたは空白表示のときJ40を返したい
このときA列はA1からA40までは値が入力されてますがA41からしたはまったくの空白です)

Aベストアンサー

計算結果が数値なのであれば
=INDEX(J:J,MATCH(MAX(J:J)+1,J:J,1))
でJ列の最後に表示されている値を返します。 

Q エクセル関数式により、列ごと最後尾と最後尾からの2行目の値を抜き出す

 エクセル関数式により、列ごと最後尾と最後尾からの2行目の値を抜き出す。

 初めまして、よろしくお願いします。
     A  B  C  D  E
1    赤  青  黄  緑  黒
2 
3   
4    1  3  2  0  9
5    9  1  3  4  3
・    ・  ・  ・  ・  ・
・    ・  ・  ・  ・  ・  
112  4  6  1  9  6
113  7  7  5  8  1
114  6  9  1  3  7   
115  7     2  5  0
116  8     0     0

 という表があります。
各列の空白、もしくは0の入力されている後の値(A列では8、B列では9、C列では2、D列では5、E列では7)と最後尾の数字から2行目の値を(A列では6、B列では6、C列では5、D列では8、E列では6)を抜き出すことのできる関数式の方法がありましたら、教えていただきたく。よろしくお願いします。

Aベストアンサー

私のやり方だと、「ゼロより大きい」という論理値と行番号をかけ
算した配列を生成し、その最大値および三番目に大きい値が目的の
行である。という手口を使います。こちらの仕様ではE112が0で
あったときにE111が採用されます。
最後尾
=index(A1:A200,large(index(row(A4:A200)*(A4:A200>0),0),1))
最後尾から2つ上、ただし0は除外
=index(A1:A200,large(index(row(A4:A200)*(A4:A200>0),0),3))

Qエクセル:データが入った最終行の行番号の取得

お世話になります。
A列にいろいろデータが入っているとして、データが入っている一番下(最終行)の行番号をB1のセルに表示させるにはどういう計算式で出来るでしょうか?
A列のデータは数値だけでなく文字列も含みます。また途中空白セルもあります。
A1~A20にデータが入っているときはB1に20と表示させる。
よろしくお願いします。

Aベストアンサー

=MAX(IF(COUNTIF(A:A,"*"),MATCH("",A:A,-1)),IF(COUNT(A:A),MATCH(MAX(A:A)+1,A:A,1)))

Q【Excel】列と行の最後尾にジャンプする方法は?

Excel2007です。

タスク操作でも、ショートカットでもよいのですが、質問のように
列と行、それぞれの終わりにジャンプできる方法を教えてください。

Aベストアンサー

放置で終わるのかと思っていたら補足が付きましたね。

シート自体の一番下、右と言うことですか。

でしたら、Ctrl+↓、Ctrl+→を何回か繰り返せば行きますよ。
大抵は1回目で入力範囲の最後、もう1回で端までいくはずです。
間に未入力セルと入力セルが挟まる場合はその都度移動が止まりますので繰り返してください。
やってみればわかります。

あとは、最終セルのアドレスを名前ボックスに入力とかですかね。

私の書いた下辺、右辺はセルを四角とした時の下や右の線です。
マウスのポインタを線の上に持って行くと上下左右に外向きの矢印にポインタが変わりますのでそこでダブルクリックします。
但しこれは入力範囲で移動の時の方法です。

QEXCEL 最終行のデータを他のセルに参照したい

1ヶ月の集計表があります。
1日○○○人
2日○○○人
3日○○○人
4日○○○人
5日(空白)
6日(空白)



という毎日の該当者数の日報があります。
最後に入力されている人数(この場合4日の人数)を使って
別シートで計算をしたいのですが、
どうやって抽出(指定?)すればいいでしょうか?

簡単に言うと、
上から順に入力された最後の行のデータを
他のセルに参照する方法(関数)は?
ということになるでしょうか?

簡単なようですが関数が思いつきません。
マクロが必要なんでしょうか?

Aベストアンサー

たとえば、列Aに日付、列Bに値の表だとしたら、
B列の最終行の値を参照する式は以下のとおり。
(※ただしB列は連続してデータが存在している前提)

=OFFSET(B1,COUNTA(B:B)-1,0)

OFFSET関数は基準になる位置から
指定された行数、列数の位置のセルを参照する関数です。
この例の場合は、基準の位置がB1、基準の位置B1から
B列のデータ個数-1行目を参照させる式になっています。

ヘルプもご確認ください。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

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

いつもお世話になっております。

A1 ○○ B1 ○○ C1 ○○
A2 ○○
A3 ○○ B3 ○○

...といったかんじでセルにバラバラにデータが入っているとします。

列にデータが入っている最終の行だけ取り出したいのです。
上の例だとC1,A2,B3です。

マクロを使わなきゃ無理そうなのですが、アフォなのでわかりません。(T.T)
プログラミングの経験がある方、賢い方、教えてくださいませ。

Aベストアンサー

以下の関数で如何でしょうか。期待値と相違していましたら無視して下さい。
(例)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では無いでしょうか。

QExcelで、条件と一致する最後のセルを検索したい

Excelで、条件と一致する最後のセルを検索したいのですが、どの関数をどのように使えばいいかわかりません。
どなたかお力をお貸し下さい。

問)
日付  社名  品名  個数
1/1   A    あ    1
1/1   C    い    2
1/2   B    う     3
1/2   A    え    4
1/3   C    お    5
1/3   A    あ    3

答)
A社の最終購入日は  1/3 あ 3
B社の最終購入日は  1/2 う  3
C社の最終購入日は  1/3 お 5

となるようお願いします。

Aベストアンサー

エクセルには「最後の該当」を検索する関数はありません。
無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。

A2:
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<COUNTIF(C:C,C2)),"",C2)
以下コピー

答えは簡単なVLOOKUP関数を使うだけです。
H2:
=IF(COUNTIF($A:$A,$G2),VLOOKUP($G2,$A:$E,2,FALSE),"")




まぁ一応ご参考に作業列を使わない方法:
H2:
=IF(COUNTIF($C:$C,$G2),INDEX(B:B,MAX(IF($C$2:$C$999=$G2,ROW($C$2:$C$999)))))
と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する

説明は省略しますので、ブラックボックスで使ってください。

Qエクセルで列の一番最後の数値を表示させるには。

例えば、A1からA6 B1からB6までの表があるとします。
この時にB6に数値が入力されている場合は、その数値を指定のセルに表示し、B5までしか入力されていなげればB5の数値を表示させたいのです。
仮に、B列に何も入力がなければA列の一番最後の数値が表示されるようにしたいのですが。
このような事は可能でしょうか?
宜しくお願いします。

Aベストアンサー

=IF(COUNT(B1:B6),LOOKUP(9999,B1:B6),IF(COUNT(A1:A6),LOOKUP(9999,A1:A6),""))
9999は範囲に入る数よりも十分大きい数字を記入します。

QEXCEL(IF関数)でCELLの色を変える。

例えば、IF関数で真ならセルの色を赤色にしたり、文字の色を変えたりする関数とかはあるのでしょうか?わかりません・・・知ってる方いらっしゃれば教えて下さい。

Aベストアンサー

こんばんは。

関数ではありませんが‥

<条件付き書式>ではダメなのでしょうか?

メニュー<書式>-<条件付き書式> です。

どのような条件を想定していらっしゃるのかわかりませんが、
<条件付き書式>については↓の参考URLをご覧ください。

▽条件付き書式・その1
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

▽条件付き書式・その2
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu5.htm

参考URL:http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm


人気Q&Aランキング