親子におすすめの新型プラネタリウムとは?

エクセルに、左から順にデータを追加しています。
よって、一番右端が最新版となります。
その一番右端のデータのみを取りだして、自動的に作表するようにしたいのですが、どうすればよいでしょうか。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

こんにちは。



一行目を検索するとして、

入力が文字列だけなら、
=INDEX(1:1,MATCH("ー",1:1))

数値だけなら、
=INDEX(1:1,MATCH(9E+307,1:1))
・・・9e307は、十分に大きな数字なら何でもよいです。

どちらか分からないなら、組み合わせて
=INDEX(1:1,MAX(MATCH({"ー",9E+307},1:1)))

1:1というのは、A1:M1と書き換えてもよいです。
A1:M1と書けば、A1:M1のなかで一番右端の値を
参照します。
    • good
    • 0

VBAでやると、End(xlUp)とEnd(xlToLeft)だけで出来ます。


Sheet1の右端をSheet2のA列にセットします。数字以外が右端にあっても、拾ってしまいます。
(コードを簡単にするため)
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("sheet1")
Set sh2 = Worksheets("sheet2")
'-------
d = sh1.Range("a65536").End(xlUp).Row
For i = 1 To d
c = sh1.Cells(i, "IV").End(xlToLeft).Column
sh2.Cells(i, "A") = sh1.Cells(i, c)
Next i
End Sub
これはユーザー関数化することが出来ます。
Function leftcv(a)
c = Cells(a.Row, a.Column).End(xlToLeft).Column
MsgBox c
leftcv = Cells(a.Row, c)
End Function
シートには、X1セルに=leftcv(x1)などと入れます。
データ列の最右列より、x列は右にあること。
下方向へ式複写が出来ます。
(例)
(A) (B) (C) (D)
12ab1212(セルx1)
1244(x2)
3423242525(x3)
231212(X4)
    • good
    • 1

データ範囲が、A1:I1であるとして、


=INDEX(A1:I1,,COUNT(A1:I1))
では、いかがでしょうか。
ただし、途中に空白行があると、うまく右端のデータを読んでくれませんが。
    • good
    • 2

同じシート上で1行目なら(行は1:1)


=INDEX(1:1,1,MATCH(MIN(1:1)-1,1:1,-1))
又は
=INDIRECT(ADDRESS(1,MATCH(MIN(1:1)-1,1:1,-1)))
異なるシート(Sheet1)のデータなら
=INDEX(Sheet1!1:1,1,MATCH(MIN(1:1)-1,Sheet1!1:1,-1))
又は
=INDIRECT(ADDRESS(1,MATCH(MIN(1:1)-1,Sheet1!1:1,-1),,,"Sheet1"))
    • good
    • 0

No.2の補足です。



maruru01さんの回答をみて思い出しました。
私の回答は、ひとつも入力がないとエラーになります。
    • good
    • 0

こんにちは。

maruru01です。

例えば、B1から順に数値データを入力していくとして、最新(右端)のデータをA1に表示させる場合、A1に、

=IF(COUNT(B1:IV1),LOOKUP(MAX(B1:IV1)+1,B1:IV1),"")

と入力します。
なお、B1~に1つも数値データがない場合は、「""」にしてあります。
ちなみに、認識するのはあくまで数値データで、途中や右の方に文字列データがあっても、無視されます。
    • good
    • 1

このQ&Aに関連する人気のQ&A

min-1」に関するQ&A: min-1の意味は?

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

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

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

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

Q値が入っている一番右のセル位置を返す方法

たとえばA行に値(文字列)が横に並んでいるとして
値が入っている一番右のセルの位置を返すようにするにはどのようにすればいいでしょう?

Aベストアンサー

セルの位置を返したいのであれば
=CHAR(MATCH(MAX(1:1)+1,1:1,1)+64)&1
でどうでしょうか。

Q値の入っているセルのうち、一番右側の値を取得したい(エクセル)

現在、データを左から右へ順次追加しています。
一番右側が、最新データとなります。
やりたいことは、複数の行にある、最新データを拾って、グラフを作成したいと思ってます。
どうやったら、できるのでしょうか?


<イメージ?>
●:最新データ
×:古いデータ
○:空欄
●のみを拾って、グラフを作成したい。

×××××●○
××××●○○
×●○○○○○
××××●○○

Aベストアンサー

こんにちは。maruru01です。

データがB列から、順に右へ入力されていくとして、A列に最新データを表示する場合は、

A1を選択して数式バーに、

=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN($B1:$M1),COLUMN($B1:$M1)))))

と入力し、まだカーソルが数式バーにある状態で[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。
(数式の両端に「{}」が付いて配列数式になります。)
これを下の行へコピーします。
あとは、このA列の値でグラフを作成すればいいと思います。
なお、上記の数式ではデータ入力範囲をB~M列にしましたが、後ろの列は、データを入力する可能性のある最大の列にして下さい。
(何列まで入力するか分からない場合は、エクセルの最終列のIVにしましょう。)

各関数については、ヘルプなどを参照して下さい。
配列数式については、以下のページを参考にして下さい。

http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm

参考URL:http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm

こんにちは。maruru01です。

データがB列から、順に右へ入力されていくとして、A列に最新データを表示する場合は、

A1を選択して数式バーに、

=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN($B1:$M1),COLUMN($B1:$M1)))))

と入力し、まだカーソルが数式バーにある状態で[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。
(数式の両端に「{}」が付いて配列数式になります。)
これを下の行へコピーします。
あとは、このA列の値でグラフを作成すればいいと思います。
なお、上記の数式ではデータ入...続きを読む

QExcel 一番右のセルを参照する

Excelで、A1からZ1のセルの内で一番右の入力してあるセルの数字を参照したい場合はどうしたらいいのでしょうか。
例えば、A1,B1,C2,D1,E1にそれぞれ、5, (未入力), 10,7,(未入力)とかの場合は、入力されている中で一番右側にあるD1にある7がその答えになります。

Aベストアンサー

すいません、補足です。
=HLOOKUP(10,A1:Z1,1,1)
の最初のパラメーター"10"は入力される最大値より大きい数字にして下さい。

Qエクセル関数式、入力範囲の一番右端の値を返すには?

エクセル関数式質問です。
Sheet1のセルA1値、A2値、A3値、A4値を,Sheet2のセルA1に「=Sheet1!A1」,セルB1に
「=Sheet1!A2」,セルC1に「=Sheet1!A3」,セルD1に「=Sheet1!A4」という仕組みを作っ
ておいて、Sheet1のセルA1からA4に人の名前をそれぞれ入力したとします。
例えば、Sheet1のセルA1に「田中」、セルA2に「中村」、A3は空白、A4も空白としたと
き、Sheet2のセルA1には「田中」,セルB1には「中村」,セルC1に「空白」,セルD1に「空
白」(この場合、これらの空白は空白に見えても実際は、「Sheet1!A*」が隠されている
わけですが…)となります。
以上の条件において、Sheet2の別セルに、今、Sheet2のA1からA4の範囲に表示されてい
る名前のうち、常に右端の名前を表示させたい場合、この場合は「中村」です。その右
となりは空白ですので。仮にA3に「大山」と表示されたてA4は空白の場合は、もちろん
「大山」になります。この別セルに入力する関数式を教えてください。宜しくお願いし
ます。

エクセル関数式質問です。
Sheet1のセルA1値、A2値、A3値、A4値を,Sheet2のセルA1に「=Sheet1!A1」,セルB1に
「=Sheet1!A2」,セルC1に「=Sheet1!A3」,セルD1に「=Sheet1!A4」という仕組みを作っ
ておいて、Sheet1のセルA1からA4に人の名前をそれぞれ入力したとします。
例えば、Sheet1のセルA1に「田中」、セルA2に「中村」、A3は空白、A4も空白としたと
き、Sheet2のセルA1には「田中」,セルB1には「中村」,セルC1に「空白」,セルD1に「空
白」(この場合、これらの空白は空白に見えても実際は、「Sheet1!A*」が...続きを読む

Aベストアンサー

こんな感じでも良いかな

=LOOKUP(1,0/(A1:A4<>0),A1:A4)

QEXCEL 関数 選択範囲一番右のセル番地確認方法

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

EXCELの関数について相談をさせてください。
選択範囲($AC11:$IV11)で入力されているセルの一番左のセル番地を返す関数はありますでしょうか。
一番右のセルは、以下の関数で取得できるのですが、一番左が取得できません。

=INDIRECT(ADDRESS(7,LARGE(INDEX(($AC11:$IV11<>"")*COLUMN($AC11:$IV11),),1)))

ご存じの方がおられましたら、ご教授いただけませんでしょうか。
以上、よろしくお願いいたします。

Aベストアンサー

なぜ、そのような回りくどい数式を考えるのだろう??

そのまま考えて一番右
=INDEX($7:$7,MAX(IF($AC11:$IV11<>"",COLUMN($AC11:$IV11))))
[Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる)

一番左
=INDEX($7:$7,MIN(IF($AC11:$IV11<>"",COLUMN($AC11:$IV11))))
[Ctrl]+[Shift] +[Enter] で確定

11行目 文字列なら
一番左
=INDEX($AC$7:$IV$7,MATCH("*",$AC11:$IV11,0))
一番右
=INDEX($AC$7:$IV$7,MATCH("ーー",$AC11:$IV11))

11行目 数値なら 一番右
=INDEX($AC$7:$IV$7,MATCH(8^3^8,$AC11:$IV11))

とすることも可能です

Q選択行内で0%を除く一番右端の数値を取得したい

こんにちは。

プロジェクトの計画/実績の遂行率表を作成しています。
ある行に月度ごとの遂行率を数式で取得してパーセンテージ表示しています。
その行で、一番最新の数値にあたるのが、0%を除く一番右端の値になります。
この値をできれば関数で取得したいのですが、どうにもうまくいきません。

1つの月度が1列だけであればMATCH関数やVLOOKUP関数で取得できるのですが、
1つの月度内でも項目が多数あるためこれではだめでした。
また、http://oshiete.goo.ne.jp/qa/935713.html にある方法も試してみましたが、
あらかじめ先の月度の計画値を入れているので遂行率に0%表示が出るため、
数値と判断されて失敗でした。

どなたかご存知の方教えていただきたいです。
よろしくお願いします。

Aベストアンサー

こんな感じかな
=LOOKUP(1,0/A1:Z1,A1:Z1)
0以外の数値を対象とします

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセルで左端のセル位置を取得するには

範囲内で空白を除いて一番左端のセルの位置を取得する方法というのはあるでしょうか?

たとえば以下のような表の場合にA1にはC1、A2にはD2、A3にはE3が入るようにしたいのです。
以下のような表の場合に
 A  B  C  D  E
1      1  2   3
2           2   3
3             3

わかりづらい質問で申し訳ありませんが、よろしくお願いします。

Aベストアンサー

No.5です。

MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)
MATCH(検査値, 検査範囲, 照合の型)

検査範囲は INDEX関数でつくられた配列データ。
配列データの内容は LEN(B1:E1)で、B1:E1各セルの文字数( 桁数 )。

質問の例ではわかりにくいので
B1:空白、C1:1234、D1:空白、E1:56
のようにデータが入っていると思ってください。

SIGN関数を使わずに、INDEX(LEN(B1:E1),0) だとすると、
{0,4,0,2}
という配列データになります。
0、4、0、2 は LEN関数の戻り値、B1:E1のそれぞれの文字数( 桁数 )です。

SIGN関数は数値の正負を調べる関数。
引数が正の数なら( 何桁であっても )1を返します。
だから SIGN関数を使って、INDEX(SIGN(LEN(B1:E1)),0) なら
{0,4,0,2} という配列データは
{0,1,0,1}
というふうになります。
ここでは SIGN関数の引数は文字数なので、セルが空白なら 0、データが入っていれば 1。戻り値は 0 か 1 かのどちらかです。

なので、MATCH関数は↓な感じになります。
=MATCH(1,{0,1,0,1},0)

1が検査値。{0,1,0,1}が検査範囲。
何桁の数値( 文字列でも )が入っていても、検査値を 1にしておけば左端のデータ位置を求めることができるってことです。

もしかしてこの検査値の 1を見て、
>左端の値は1とは限らないのです。
と思いました? ちっ、ヴァカな回答よこしやがって! て感じでした?

このときの MATCH関数が返す位置は B列を1とするものなので、正しいセル番地を求めるために +1しています。
MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)+1

検査範囲が C列から始まるなら +2、D列から始まるなら +3のように調整してください。

No.5です。

MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)
MATCH(検査値, 検査範囲, 照合の型)

検査範囲は INDEX関数でつくられた配列データ。
配列データの内容は LEN(B1:E1)で、B1:E1各セルの文字数( 桁数 )。

質問の例ではわかりにくいので
B1:空白、C1:1234、D1:空白、E1:56
のようにデータが入っていると思ってください。

SIGN関数を使わずに、INDEX(LEN(B1:E1),0) だとすると、
{0,4,0,2}
という配列データになります。
0、4、0、2 は LEN関数の戻り値、B1:E1のそれぞれの文字数( 桁数...続きを読む

Q一番右側のセルの値

Sheet 1のセルA1~セルL10までのセル120個には、不規則にランダムで数字(整数)が記載されています。
ランダムですので数字のゼロが記載されているセルもあります。

これをセルM1にはセルA1~L1までのセルの一番右のセルに記載されているゼロ以外の数字を抜き出します。同様にA2~L2、A3~L3,・・・・・・・・と云うように各行についても最も右側にあるゼロ以外の数字を抜き出したいのですが、IF関数でIFを重ねて式を作成せずにできる関数を教えてください。

また、同様に一番左に記載されているゼロ以外のセルを抜き出す方法についても教えてください。

Aベストアンサー

一番右:
=INDEX(A1:L1,MATCH(1,0/A1:L1,1))
と記入してコントロールキーとシフトキーを押しながらEnterで入力

一番左:
=INDEX(A1:L1,MATCH(1,A1:L1/A1:L1,0))
と記入してコントロールキーとシフトキーを押しながらEnterで入力


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング