アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sheet1にA車両のデータを毎日入力し、Sheet2にB車両のデータを入力します。Aの車両とB
の車両で、荷物の運送をしたり、Aの車両が往復したりします。
Sheet3のように、関数を使い、日付で集計したいのですが、分かる方教えてください。

「エクセルの集計」の質問画像

A 回答 (6件)

No.5です。


書式についての説明がもれていました。
ご質問者の例示では、元データの日付は「○月△日」と表示されていますが、文字データでなく「yyyy/m/d」形式の日付データであり、これを表示形式「m"月"d"日";@」で「○月△日」と見せているものとしています。
当方の添付画像では元データ、集計表とも日付は「yyyy/m/d」のままとなっていますので、ご了承ください。
また、sheet3の集計表には、$B$3:$J$2002の範囲内において条件付書式「数式を使用して、書式設定するセルを決定」で「=$B2<>""」の条件により、セルを罫線で囲む処理を行うものとします。
    • good
    • 0

まず、最初にこれから説明する方法は以下の1、2の前提で作成してあります。

これに不都合がある場合は数式で指定する範囲をご自分で調整してください。
1.A車両、B車両とも一日あたりのテータは9件を超えないものとします。
2.sheet1、sheet2とも最大件数は1000件までとします。
sheet1にA車両のデータ、sheet2にB車両のデータがあり、sheet3に集計表を作成したいとのことなので、sheet4を作業シートとして使用することにします。
元データは添付画像①②のように、ご質問者者のお示しになったものに若干追加変更を加えてあります。
sheet4には添付画像③のように一行目にA列、B列を作業列1、作業列2、C列、D列をキー列1、キー列2、E列を車両名、F列を日付、G列を行き先、H列を距離、I列を金額として見出しとします。
sheet4のA2に
=E2&F2
B2に
=IF(F2="",1,F2*10+COUNTIF($A$2:A2,A2))
C2に
=IF(COUNTIF($A$2:$A$2001,"")>0,ROUND(SUMPRODUCT((B2>$B$2:$B$2001)*(1/COUNTIF($B$2:$B$2001,$B$2:$B$2001))),0),ROUND(SUMPRODUCT((B2>$B$2:$B$2001)*(1/COUNTIF($B$2:$B$2001,$B$2:$B$2001)))+1,0))
D2に
=IF(F2="","",E2&B2)
E2に
=IF(F2="","",IF((ROW()<1002),"A車両","B車両"))
F2に
=IF(ROW()<1002,IF(Sheet1!A2="","",Sheet1!A2),IF(INDIRECT("Sheet2!A"&ROW()-1000)="","",INDIRECT("Sheet2!A"&ROW()-1000)))
G2に
=IF(ROW()<1002,IF(Sheet1!B2="","",Sheet1!B2),IF(INDIRECT("Sheet2!B"&ROW()-1000)="","",INDIRECT("Sheet2!B"&ROW()-1000)))
H2に
=IF(ROW()<1002,IF(Sheet1!C2="","",Sheet1!C2),IF(INDIRECT("Sheet2!C"&ROW()-1000)="","",INDIRECT("Sheet2!C"&ROW()-1000)))
I2に
=IF(ROW()<1002,IF(Sheet1!D2="","",Sheet1!D2),IF(INDIRECT("Sheet2!D"&ROW()-1000)="","",INDIRECT("Sheet2!D"&ROW()-1000)))
を記述し、それぞれ2001行目まで下方向にコピーします。
sheet3には添付画像④のように一行目、二行目は見出し、C1には「A車両」、F1には「B車両」という文字があるものとします。
sheet3のA3に
=IF(B3="","",B3*10+COUNTIF($B$3:B3,B3))
B3に
=IFERROR(VLOOKUP(ROW()-2,Sheet4!$C:$I,4,FALSE),"")
を記述し、それぞれ2002行目まで下方向にコピーします。
C3
=IFERROR(VLOOKUP(IF(COLUMN()>5,$F$1,$C$1)&$A3,Sheet4!$D:$I,MOD(COLUMN(),3)+4,FALSE),"")
を記述し、H列まで右方向へコピーし、さらにC3~H3を2002行まで下方向へコピー
I3に
=IF(SUM(D3,G3)=0,"",SUM(D3,G3))
を記述し、J列へ右方向へコピーし、さらにI3~J3を2002行まで下方向へコピー
これで集計表が完成するのですが、A列は作業列なので、列を非表示にするか、文字色を白色にするなどして見映えを整えてください。

関数で集計表を作成しようとすると上記のような手順になると思いますが、VBAで作成したほうが余程シンプルなものになる気がします。
「エクセルの集計」の回答画像5
    • good
    • 1

所で、



負け惜しみや、保険的布石でも、
ありませんが。


もし、

私が 出来なければ、
世界中 1人たりとも、
シート関数の 範囲内では、

作り込めない ものと、
思いますよ。


実は、

私も そうそう、
作れるとは、
思えていません。
    • good
    • 0

いやいや、



此は かなりの、
高難易度ですね。


私等でも、

作れるか チャレンジして、
構いませんか?
    • good
    • 1

こんにちは



ひとつの車両が1日の間に2種類の工程を移動することはないのでしょうか?

無いものとして良ければ、日付をキーに検索して値を参照すれば良いだけなので、VLOOKUP関数を素直に設定しておけば可能と思われます。
(実際には、該当の工程が存在しない場合には、空白にする処理も必要ですが…)
https://support.microsoft.com/ja-jp/office/vlook …
    • good
    • 0

直接の回答ではありません。


始めからシート3で入力して距離、金額だけ集計すればいいのでは?
    • good
    • 2

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