• ベストアンサー

エクセルの関数

お世話になります。 エクセルで列Aで行2以下に3/1・3/2・・・と日付を入れていきます。列Bに売った個数を入れていきます。 売れない日が多い為トビトビになります。(空白若しくは0を入力)列B行1に何日間売れていないか、日数を表示させたいのです。(前回売れてから3日売れていなければ3 売れれば0) 説明がわかりづらいと思いますが、宜しくお願い致します。

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

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.8

{}で囲まれた数式を配列数式といいます。 配列数式とは複数のセルからなる範囲に1つの数式を共有しているような数式ということで、文章にすると解りにくいと思いますので、具体例を挙げます 今回はA2:A5に日付、B2:B5に個数が入っていると仮定します。 日付  個数 3/1   10 3/2   10 3/3    0 3/4    0 日付をシリアル値にして表示すると・・・ 日付  個数 38777  10 38778  10 38779   0 38780   0 A2:A5を実際の数値で表してみると {38777,38778,38779,38780} B2:B5を実際の数値で表してみると {10,10,0,0} これを元に(B2:B5>0)を表してみると {1,1,0,0} これは各セルの値が条件(今回は0より大きい)を満たしていれば1そうでなければ0になります 上記の結果を元に (A2:A5)*(B2:B5>0)を実際の数値にしてみると {38777*1,38778*1,38779*0,38780*0} →{38777,38778,0,0} ということになります。 よって、MAX((A2:A5)*(B2:B5>0))は38778 つまり、書式を日付にすると3/2になります このように、作業用配列を使用して数式を作る場合に配列数式が用いられます。 私の説明では解りにくい点が多々あると思いますので 以下のサイトを参考にして下さい

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/
sutesute
質問者

お礼

keirika様 図々しいお願いにもかかわらず、回答していただき、ありがとうございます。 大変分かりやすい解説で、理解することができました。 教えていただいたサイトもじっくり読んでみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

B列にB1:B11に 1 0 0 1 0 0 2 0 0 0 2 とします。最初行のC1には0を入れる。 C2には=IF(B2=0,C1+1,0) と入れてC11まで式を複写します。 C列のセルの書式をユーザー定義で「##」にします。 これで0を見えなくします。 結果B1:C11 1 0 1 0 2 1 0 1 0 2 2 0 1 0 2 0 3 2 式は簡単なんですが、これでいけませんか。 VBAでやれば、上記のようにも、0が途切れた前の日だけに日数を 出すのも簡単ですが。

sutesute
質問者

お礼

回答ありがとうございます。 一つのセルに最新の結果だけを表示したいのです。 VBAですか・・・。難しそうですね。

全文を見る
すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.6

No.5です。 訂正があります。 B1セルの式を以下のものに変えてください =MAX(A2:A100)-MAX((A2:A100)*(B2:B100>0)) 宜しくお願いします。

sutesute
質問者

お礼

回答ありがとうございます。 まさしく求めていた数式です。 重ねてのお願いで大変申し訳ありませんが、以下の点についてお時間ありましたら、教えて頂けませんか。 この数式の計算内容。(A2:A100)*(B2:B100>0)特にこの部分の意味がわかりません。 書式 G/標準の意味(設定方法はわかりますが) Ctrl+Shift+Enterによって付く{}の意味 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.5

日付がA2:A100で、個数がB2:B100まで入力すると仮定した場合 B1セルに=MAX(A2:A100)-MAX((A2:A100)*(B2:B100))を入力し、Ctrl+Shift+Enterを同時に押します。 セルが100行を超える場合、式の中の100を200や300に変更してもらえれば、対応できます。 なお、B1セルの書式はG/標準でお願いします。 もしよろしければ、一度試してみてください

全文を見る
すると、全ての回答が全文表示されます。
noname#119141
noname#119141
回答No.4

列Cと列Dも使ってよいならば・・・ 列B1:=SUM($D2:$D32) 列C2:=IF(ISBLANK($B2),"",IF($B2>0,0,$C1+1)) 列D2:=IF($C3="",$C2,0) ※列C2と列D2は、32行目までコピー。 列CとDは、「表示しない」にでもして頂ければよろしいかと。 (注意)列Bの欄で、空白セルと0が入ったセルが混合にあると     エラーになってしまいます。 考えれば、もっといい方法もありそうだけど とりあえず簡単な方法で。

sutesute
質問者

お礼

回答ありがとうございます。 色々な方法で求められるのですね。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.3

■前提------------ 売上が0の日は 0を入力( ←←必ず 0を入れてください! 空白にしないこと!) 今日が 3/15だとすれば、3/16以降の売上( B列 )は空白にしておくこと ------------------ 日数を出すために D1セルとE1セルを作業用セルとします( どのセルでもかまいませんが、例として ) データ範囲を2行目から32行目としているので、33行目以下にもデータを入れる場合は、数式の範囲を変更してください。 D1:( 最後に売上のあった日 ) =IF(COUNTIF(B2:B32,">0"),LOOKUP(1,0/(B2:B32<>0),A2:A32),"") E1:( 売上が入力された最後の日~売上0を含めて ) =IF(COUNT(B2:B32),INDEX(A2:A32,COUNT(B2:B32)),"") D1 と E1のセルの表示形式を「日付」にしてください。 ( メニューの書式~セル ) ■C1セルにご希望の日数を表示します( B1セルでもかまいません ) C1: =IF(COUNT(D1:E1)<2,COUNTIF(B2:B32,0),E1-D1) C1セルの表示形式を「標準」にしてください。 数式は正確に入力してください。 画面上では見づらいと思うので上の数式をそのままコピペしてもかまいません。 エクセルに貼り付けるときは、形式を選択して貼り付け~テキストで。

sutesute
質問者

お礼

回答ありがとうございます。 求めたい数字がでてきました。 他の列を使用するのが難点ですが。

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>列B行1に何日間売れていないか、日数を表示 B1に未入力の件数を表示したいという事なのでしょうか? 未入力の日数ならB1に =COUNTIF(B2:B32,"") で全数カウントできますが。 0と入力するのであれば =COUNTIF(B2:B32,0) でカウントできます。 空白か0の場合 =COUNTIF(B2:B32,"")+COUNTIF(B2:B32,0) でも出来ます。 SumとIfを使っても出来ます。 こういう事なのでしょうか?

sutesute
質問者

お礼

回答ありがとうございます。 質問内容がわかりづらく、申し訳ありません。 #1様の補足に書かせていただいた内容で分かるでしょうか。お手数ですが、再度ご回答いただけるとありがたいです。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

B1セルにとのことですが、たとえば、 A列 B列 3/1  1 3/2  0 3/3  1 3/4  0 3/5  0 3/6  0 3/7  2 : このようになった場合、3/3を考えれば1、3/7を考えれば3です。 連続して売り上げゼロだった最大日数を考えればいいのでしょうか? それとも、1日ごとにC列にでも前日までの売れなかった日数を入れるのでしょうか? あるいは、売り上げゼロだった日数の集計をするのでしょうか?

sutesute
質問者

お礼

回答ありがとうございます。 補足の内容でご回答いただけるとありがたいのですが。

sutesute
質問者

補足

説明がへたで申し訳ありません。 A列 B列 3/1  1 3/2  0 3/3  2 3/4  0 3/5  0 3/6  0 上記の場合は3(入力されている最後より数えて何日間売上がないのか)と表示するようにしたいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル関数で・・・

    A列の1行目から45行目までに、”1”か”×”を入力するか、空白があります。 B列の1行目から45行目までに、様々な数値、若しくは空白が入ります。 この時、A列が”×”の行でB列が空白でないセルをカウントする数式を教えて下さい。   A  B 1 ×  20 2 × 3 1  30 4 ×  5 1  20 6 7 1  30 8 ×  10・・・・ こんな感じで、A列が”×”でB列が空白でないセルは『2』と導きたいのです。 分かりにくい説明で申し訳ありませんが、宜しくお願いいたします。

  • エクセル関数についてご教授くださいませ><

    先日はこちらでお世話になりました。 この度も難解な点が出てきましたのでご教授ください^^; 前回の回答を元にお願い致します。 前回は以下の良回答を頂きました(ありがとうごうざいました)    A   B    C     D 1   H  3/2   100 2   I  3/2    110 3  H   3/3    100 4  J   3/4   180 5  J   3/4    160 6  I  3/5   90 7 空白 空白  空白 8  9 10 ・ ・ 50 空白 空白 空白 このような状態に並んでまして、D1にIのMAXを入れたい 関数を作成するにはどのようにすればよろしいでしょうか? A列はH・I・Jがランダムに入っています。 B列は上から下へ日付が大きくなります(同日付も有) C列はA列の商品個数です。 答え:{=MAX(IF(A1:A50="I",C1:C50,0))}    (データを50と仮定した場合) 前置きが長くなりましたが、今回のご質問です。 同様に最小値を求めるために、MAXをMINに変えてみましたが 0になってしまいます。 DIにIの最小値を入力したい場合はどのようにすればよいでしょうか?

  • エクセルの関数について質問です

    エクセルの関数について質問です A列に任意の個数「1」が入り、続けて「2」が任意の個数入力されています。B列に任意の文字列が入力されています。(うまく説明できないので、図を参照してください。) A列に「2」が入力されているB列の文字列を、関数でD列に取り出したいのですが、どのような関数でできるでしょうか? 「1」も「2」も個数は変動します。一度「2」が入力された以降の行に「1」が入ることはありません。「1」と「2」以外がA列に入力されることはありません。 色々考えたのですが、どうもうまくいきません。 VBAを使用すればできるとは思うのですが、どうしても関数でなければいけない事情があります。どなたか助けていただけないでしょうか?

  • エクセル 数式入り等のセルの個数について

    こんにちわ。教えて下さい。 セルの個数を数えたいのですが、下記のいづれかの方法で出来るやり方はありますでしょうか? ☆条件付き書式で色をつけた空白のみのセルの個数の数え方(列に対応) (1)A1に今日又は今日以前の日付が入って、B1にはA1の日付から2週間たっても、何らかの日付・文字が入らない場合は空白の状態で色がつくようになっています。(文字が入力されたら色は無しになります。2条件が1つのセルに設定されています) 一番ベストなのは、この状態で空白で色のついているセルの個数が数えれば一番いいです。 もし、上記で駄目な場合、 ☆C1に別の数式で、B1が空白かそうでないかで、「FALSE」「TRUE」が表示されるように設定して、その状態で「FALSE」の個数を数えるっていうやり方まではわかるのですが、A,B,C列とも、入力していけば行が増えていくので、先にC列に数式をコピーしておくと、A列に日付が入力されていなくても、「FALSE」が表示されます。A列に日付が入力されている行での「FALSE」の数を数えるという方法はありますか? 説明が下手ですみません。。。 つまり、自分がない知恵で思った、2つの方法のどちらかででも、数える方法があれば教えて下さい。もちろん、もっといい方法があれば幸いです。

  • Excelでの並び替えについて。

    Excelでの並び替えで困っています。 現在、行に日付、列に商品名を入力し、その間に販売個数を入力し管理しています。 入力はしやすいのですが、データとして扱う場合に検索等がしにくいので 日付、商品名、個数を1行に並び替えしたいと思っています。 個数が多いため、手動で全て行うのは不可能に近いです。 関数で行う事ができれば良いのですが、何か方法がありますでしょいうか。 できれば、個数が空白のセルは無視して、上に詰めて並び替えができれば理想です。

  • エクセルの関数

    日付を参照しつつ日付関連したデータの平均を一括で求める方法を教えてください。     A列   B列    C列      D列 1行 収穫回数 日付 みかんの個数  収穫時の割合 2行   1   2/2    40    40/(40+40+40) 3行   2   2/2    40 40/(40+40+40) 4行   3   2/2    40 40/(40+40+40) 5行   1   2/4    10 10/(10+20) 6行   2   2/4    20 20/(10+20)

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • Excelの関数を教えてください

    初めまして。よろしくお願いします。 関数を使って、以下のようなデータを作成することができれば、 その関数を教えてください。 Sheet1には次のように入力されています   A       B 1 日付      金額 2 2010/1/1 500 3 2010/2/5  300 4 2010/1/23 10000 5 2010/2/1  200 ・ ・ ・ A列に日付、B列に金額が入力されていて、行は決まっていません。 これをSheet2に集計したいのですが、B2~B13に関数を使ってできますか? Sheet2   A     B 1 月    金額 2 1月 3 2月 4 3月 ・ ・ ・ 13 12月 14 合計 Excelがわからなくてこまっています。詳しい方、ぜひ教えてください。 よろしくお願いします。

  • エクセルVBAについて

    VBAに関しての質問です。 A列に日付(10行目から) B列にその日の売上が 300行(300日分)入力されてる表があるとします。 C列にその日を含めた過去N日間の最大の売上を表示させたいのです。 例えば 過去5日間なら過去5日間の最大売上げを毎日表示させたいのです 当然この場合は5日間なのでCの13行目までは空白になります。 「N」日はA1セルに任意の日数で入力することによって希望の期間の数値 が表示できるようにしたいのです。 関数を使ってできるのいですが、事情がありましてエクセルのマクロの 繰り返しのプログラムでやりたいのですが VBAに関しては全く素人ですの。どなたかご教授願えませんでしょうか よろしくお願いします。

  • エクセル2007でのグラフ範囲の変更方法

    エクセル2007を使用しています。 エクセル2007で A列に日付 B列に個数 が入っており、折れ線グラフを作成しています。 A列の日付はすでに必要なだけ入っており、B列のみ更新する形になっています。 B列に個数を追加したときに、グラフの範囲をA列、B列とも個数入力行までに自動変更したいです。 VBAを使わず、関数だけでできる方法があれば押してください。 よろしくお願いします。

専門家に質問してみよう