• ベストアンサー

エクセル関数について

時間を区切ってカウント、計算をしたいのですが・・・。 13時以降作成は200円、13時以前のものは150円で計算をしたいのです。 エクセルで表は作成済みですが、時間はランダムに入力(11:00の形式で入力)されています。 よろしくお願いします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 計算結果をどこに表示させたいのかが明記されていませんので、取り敢えず仮に、D列の2行目以下に全ての商品番号を一つずつ並べて入力しておくと、E列には商品毎の13:00よりも前の個数が表示され、F列には商品毎の13:00以降の個数、G列にはその商品の全数、H列には商品毎の13:00よりも前の金額の合計、I列には商品毎の13:00以降の金額の合計、J列にはその商品の金額の合計、が表示される様にするものとして話を進めさせて頂きます。  まず、E2セルに次の数式を入力して下さい。 =IF($D2="","",SUMPRODUCT(($A$1:INDEX($A:$A,MATCH(9^9,$A:$A))<"13:00"+0)*($B$1:INDEX($B:$B,MATCH(9^9,$A:$A))=$D2)))  次に、G2セルに次の数式を入力して下さい。 =IF($D2="","",COUNTIF($B:$B,$D2))  次に、F2セルに次の数式を入力して下さい。 =IF($D2="","",$G2-$E2)  次に、H2セルに次の数式を入力して下さい。 =IF($D2="","",$E2*150)  次に、I2セルに次の数式を入力して下さい。 =IF($D2="","",$E2*200)  次に、J2セルに次の数式を入力して下さい。 =IF($D2="","",SUM($H2:$I2))  次に、E2セルにカーソルを合わせてからマウスの左ボタンを押して下さい。  次に、そのままマウスの左ボタンを押しっ放しにしたままで、カーソルをJ2セルに移動させ、そこでボタンを放して下さい。  次に、選択範囲を示す黒い太枠の右下端にある黒点にカーソルを合わせて下さい。  するとカーソルの形が「+」に変わりますから、その状態でマウスの左ボタンを押しっ放しにしてから、カーソルを下方向に移動させ、E2~J2に入力されている内容を、3行目以下にコピーして下さい。(この操作の事を「ドラッグ アンド ドロップ」と言います)  これで、欲しい情報をまとめた表が自動的に表示されると思います。  尚、御使用になられているExcelのバージョンが、もしExcel2007以降である場合には、COUNTIFS関数が使用可能ですので、その場合には、E2セルに入力する数式を、上記のものではなく、次の様な数式とする事をお勧めします。 =IF($D2="","",COUNTIFS($A:$A,"<"&"13:00"+0,$B:$B,$D2))

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。 いろいろ考えてみたいと思います。

その他の回答 (7)

回答No.8

>表は作成済みですが・・・ 貴方の作った表がどんな表なのか回答者には分かりませんよ? 添付画像より説明・・・ セルB2に「=IF(A2="","",IF(A2<TIME(13,0,0),"商品番号A","商品番号B"))」の式を入力して必要な業まで式をコピー セルE2に「=COUNTIF(B:B,D2)」の式を入力し、セルD3までコピー A列に現在の時刻を入力する方法は直接入力のほかに、「Ctrl」+「:」(コロン)でも入力できます

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。 いろいろと考えてみます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

例えばA2セルから下方に時間が入力されている、B2セルから下方に商品番号が入力されているとします。 そこで答えとなる表ですが例えばF1セルには13:00未満、G1セルには13:00以上とでも項目名を入力します。 E2セルには合計金額とでも入力します。E3セルから下行にはB列に入力してある商品番号を入力します。 そこでF2セルには次の式を入力して下行にオートフィルドラッグします。 =IF(ROW(A1)=1,SUM(F$3:F$100)*150,IF($E2="","",SUMPRODUCT(($A$2:$A$1000<"13:00"*1)*($B$2:$B$1000=$E2)))) G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(B1)=1,SUM(G$3:G$100)*200,IF($E2="","",SUMPRODUCT(($A$2:$A$1000>="13:00"*1)*($B$2:$B$1000=$E2)))) これでF3セルから下の行には13:00未満の時間になっている各商品番号ごとの件数が表示され、F2セルにはそれらの件数に150円を乗じた金額が表示されます。G列についても同じようなデータが表示されます。

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。

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

仮に2列追加(午前・午後、単価)してピボットテーブルとしては如何でしょうか。 エクセルグレードを記載されていないので操作はweb検索してみて下さい。

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.4

う~ん、まだよく把握しきってませんが、 私の回答でつくったA1:B2の表をどこか別の場所につくっておき、 A列→時刻 B列→商品番号 C列→No.2の回答の式(参照範囲などは変えて) 時間帯の区分が2つしかないのならC列にはNo.3の方の式を入れれば一覧表を作らなくてもできますね。 商品番号の数はこれもNo.3の方の式を参考にCOUNTIFを使えばできます。

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。 いろいろと考えてみます。 どうにか完成しそうです!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

例えばA列に時間が入力されており、そのデータをもとに金額を求めるのでしたら次のような式になりますね。 13時以前のものは =COUNTIF(A:A,"<=13:00")*150 13時を過ぎたものは =COUNTIF(A:A,">13:00")*200

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

本当に、単純に、質問文の内容を処理します。 あと、13:00ぴったりの時がどちらかわからないので、200円とします。 A1→0:00 B1→200 A2→13:01 B2→150 という表を作っておき、 A5→時刻を入力 B5→=VLOOKUP(A5,$A$1:$B$2,2,1) これで如何でしょうか?

hops331
質問者

お礼

回答ありがとうございました! 下手な質問で申し訳ありませんでした。。 とても参考になりました。

hops331
質問者

補足

ありがとうございます。 13:00は200円です。 作成されている表を利用したいというのが希望です。 以降、時間を入力すれば、自動的に単価が計算されるという風に。。   A1→10:30 B2→商品番号A  A2→16:00 B2→商品番号B A3→09:00 B2→商品番号A このような表で、13時以降は200円、13時以前は150円で計算して、できれば、その中で、商品番号Bは何件ある。。というのがわかるように作成したいのです。 すみません。。 分かりにくい質問内容ですが、よろしくお願いします。

  • titosan
  • ベストアンサー率20% (4/20)
回答No.1

問題の意味が理解できません。何かの単価が200円や300円で、それで価格をけいさんするとか、具体的に問題を設定してください。

関連するQ&A