こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの表中にあるデータの自動取込み要領

エクセル関数初心者です。
エクセルの“シート名:11月”の表中にある日毎に更新される前日(例.11月28日)のデータ〔図1〕のE28のデータ)を、隣にあるエクセルシート名:シート1〔図2〕の39,192と表示されている箇所に持ってきて計算させるエクセルの表ですが、常に1日前の該当する箇所を指定する ’11月’!E28 という関数を毎回入力しています(若しくは、該当箇所のデータをコピーし入力しています)。
自動的に〔図1〕のE28データを抽出して〔図2〕に取り込むには、どのような関数を作れば良いのか教えてください。『画像を添付したので、こちらで見た方が分かりやすいです』。

〔図1〕シート名 11月
   A B  C   D   E
27 12 日 506.99 2,928 38,520
28 13 月 507.27  672 39,192
29 14 火       0 39,192

〔図2〕シート名 1

2019/11/14←=today()で表示!
電気管理日誌の表形式で表示
電力計メータ値前日迄の累計電力量
9時506.99kwh前葉シートの値 →39,192kwh
21時507.19kwh


翌9時507.270.0821時~翌日9時電力量192kwh

使用電力量平均電力最大電力負荷率累計電力量← 累計電力量:前日からの使用電力量〔下記(4)項のkwh〕+前日迄の累計電力量〔下記(7)a項のkwh〕
kwhkwhkw%kwh
672 28 70 40.0%39,864

投稿日時 - 2019-11-14 10:24:17

QNo.9678768

困ってます

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

No1の追加訂正です。
todayの前日のE列にデータを表示したい

todayの前日のE列のデータを表示したい

また、11月のデータのA列の数値は半角(日本語オフの状態入力されたもの)であることになります。

なおシート名 11月のデータのA列が日付で表示を「日にち」にしている場合は
=VLOOKUP(A1-1,'11月'!A:E,5,FALSE)

投稿日時 - 2019-11-14 10:57:01

お礼

kkkklmさん コメントありがとうございます。
コメントにもとづき上手くできるか奮闘中です(結果をお知らせしたいところですが、未だそこまで到達していません)。

投稿日時 - 2019-11-16 17:11:18

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

#3,#4です。
「多分、質問はこんなタイプではないか」と想像して、下記やってみました。もし、このようなやイプのことをしたいなら、決して、エクセル関数初心者がやれるような課題ではないよ思う。興味があれば、同じようなタイプではないか、チェックしてみてはどうか。
表の入力済み最終行のデータを採ってくるというのは、関数では難しいと思うので、人間が、日時を指定する方式を勧める。
ーー
全般に、もうこの内容になると、VBAを使うべき課題かと思う。
データシート Sheet1
表形式で
A1:C31(下記計数列の数字は手抜きの数字です御免)
日付 時刻 計数
2019/11/10 15 12
2019/11/10 21 13
2019/11/11 15 14
2019/11/11 21 15
2019/11/12 15 16
2019/11/12 21 17
2019/11/13 15 18
2019/11/13 21 19
2019/11/14 15 20
2019/11/15 21 21
以下略
1日15時と21時にデータを採り、入力するとする。
ーー
Sheet2は単表形式(伝票形式)で
C1 日付
D1 入力規則のリスト(11月分日付)を使って日にちを指定、入力
本件では 2019/11/13を選択
B3:E3 日付時刻計数 (不動文字列)
A4 今回(文字列)
B4 (関数式)=D1
C4 入力規則で15(時)か21(時)を選択できるように設定。
A6 前回(文字列)
B6 (関数式) =IF(C6=21,B4,B4-1)
C6 (関数式) =IF(C4=21,15,21)
問題は、E4とE6の関数式だが、
E4の式 =INDEX(Sheet1!$C$1:$C$30,SUMPRODUCT((Sheet1!$A$1:$A$30=B4)*(Sheet1!$B$1:$B$30=C4),ROW(Sheet1!$C$1:$C$30)))
E6の式 =INDEX(Sheet1!$C$1:$C$30,SUMPRODUCT((Sheet1!$A$1:$A$30=B6)*(Sheet1!$B$1:$B$30=C6),ROW(Sheet1!$C$1:$C$30)))
これらは2条件(A,Bの2列)が合致するデータ(C列データ)を取ってくる
式。
ーー
データ最終行を採るのでなく、日付+時刻は人間は選択して決定する方式。
ただしドロップダウンで選択で、入力が苦にならないようにした。
結果 (Sheet2の見た目)
日付2019/11/13

日付時刻計数
今回2019/11/1321時19  「時」はD4、D6固定文字列。

前回2019/11/1215時16
(注)2019/11/13と21はドロップダウンから選択したもの
19と16のところは、データ表(Sheet1)から関数で引っ張ってくる。
ーー
最後に、「データを作って、関数を考える」のでなく、関数でやりやすいような、エクセルの表の、列と行のデータを、初めから(エクセル利用では)計画すべきことは鉄則だと思う。

投稿日時 - 2019-11-15 18:03:29

お礼

imogasiさん アドバイスありがとうございました。
初心者の小生にはちょっと難解でした。おいおい勉強していきたいと思います。

投稿日時 - 2019-11-16 17:15:23

ANo.4

#3です。その後考えたら、#3の回答は不適当だとわかりました。日が経ち、行が増えると、ずれていくので適当でない。
そこで考えたのですが、下記も論点がずれていたらすみません。無視してください。
ーー
そこで、ソート名:11月で
(1)A列で具体的な日付で、1日前を探す。
しかしA列に時刻はあっても、画像では日付は見えない。日付入りの時刻データで表示形式で、時刻だけ表示はできるがどうか。
(2)関数を入れる行の1行前とか、2行前などで、前日が捉えられるかどうか
画像では不明。1日分が9時と21時2回測定などなら
ーー
TODAY関数も日が経つと変わる(珍しい関数)。良い点でもあり、注意が必要でもある関数です。RANDOMなどもすぐ変わる。
ーー
基本的には、前日を問題にするような場合は、日付を列データに持つべきだと思う。それも日付シリアル値で。それをー1したら、前日が判る。
しかし会社休業日などで休みがあり、その日はデータが飛ぶときは、別の方法を考えないとならない。
ーー
「ある列で現在行の1つ上から(上に)数えて最初の同値の行を求める」は難しそう。

投稿日時 - 2019-11-14 15:29:14

ANo.3

下記は、小生の質問の誤解ならすみません。
ーー
最近の質問者の中では、説明が丁寧な方なのはわかるが、この問題の特徴を
文章で、捉える(表す)訓練をすれば、今後質問者自身の進歩につながると思う。
画像をコピペして、説明をするのは安易だが、直接的でない場合が多い。
業界用語など書き連ねられると、読む気がなえる。
ーー
質問の標題としても、ふさわしいと思う。またWEB照会すれば
(例 Googoleで「エクセル 関数 表 最下行」で照会すれば)
沢山の記事が出てくる。
ーー
例えば
「その列のデータの入っている最下行のデータを取りたい」ではどうか。
例データ A1:B7
氏名 計数
太田 123
山田 34
下田 46
木田 87
吉田
有田
どこでもよいが、例えばD1に、関数式
=INDEX(B:B,COUNTA(B:B),1)
結果は 87
これを応用できないか。

投稿日時 - 2019-11-14 12:45:07

ANo.1

todayの前日のE列にデータを表示したいという事だと思うのですが
シート名 1 の =todayが入っているセルをA1とした場合
シート名 11月のデータが数値の12,13,14・・・とかになっている場合
=VLOOKUP(DAY(A1)-1,'11月'!A:E,5,FALSE)
でできないでしょうか。

投稿日時 - 2019-11-14 10:50:17

あなたにオススメの質問