• 締切済み

エクセル 応用

 A列 B列 C列 D列 E列 F列 G列 1 数  数  平均 空白  平均のコピー  2 3 4 5 上のような形でA列には今日の売上(数字)B列にも今日の売上 C列にはA列とB列の同じ行の平均がでています。 D列は空白列です。 その平均を今日はE列にコピー貼り付け、次の日はA列とB列のデータを消去し、次の日のデータを打ち込み平均を次はF列に貼り付け、 その次の日はG列に貼り付け、その次の日はまた戻ってE列に貼り付けを毎日繰り返しています。このコピー貼り付けの作業でだいぶ時間がとられるので何かいい方法はないでしょうか? 色々関数を考えて見ても思いつきませんし、マクロでボタンをつくろうと試みましたが、なにぶんVBAの知識がほとんどなくてうまくできません。どなたかいい案があればぜひ教えて下さい。 お願いします。

みんなの回答

回答No.5

行(商品かな?)毎に日付がバラバラなのですか? 例えば18日の売上があったとすると 1行目はE列。2行目はF列。3行目はE列。4行目はG列みたいな。 もし毎日全部の行が同じ列なら(今日は全部E列、明日は全部F列 明後日は全部G列、そのまた次の日は全部E列)まとめてコピーすれば良いだけです。 これなら30秒もかからないですよね? そうでないならマクロでやらないときついかもしれません。 もし、マクロでやるならどこかいらない列に前回コピーした列がどこかを記憶しておかないといけないでしょう。 どこまでコピーしていたのかわからくなってしまいます。 というか、これはマクロ以前の問題な気がします。この行はこの前ここに コピーしたなんて情報100行以上も覚えるのはさすがに人間技じゃ無理。 そこら辺はどうしているのですか? 私がマクロで作るなら1行更新ボタンと一括更新ボタンを用意して 前回コピーした日付と列、本日更新済みかどうか (5日にコピー済の場合"TE5"、コピー済みじゃない場合"FE5")をどこかに格納して 格納した列を非表示にします。 ちなみにブックを開いた時にチェックして前の日付ならTからFに戻します。 【1行更新ボタン動作】 ボタンを押したらアクティブセルの行を更新。もしその日に 既に一度更新されている場合はメッセージで確認。 更新(コピー)したら売上データ(A・B)は消去する。 売上データが入っていない場合はエラーメッセージ。 【一括更新ボタン動作】 本日更新されている分は考慮するかしないか メッセージで確認して、該当する全ての行を更新する。 何も入力されていない空白セルは更新しないで無視する。 更新(コピー)したら売上データ(A・B)は消去する。 ↑みたいな感じでいいんですか?それとももっと違う機能が必要なのですか??

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

これなど典型的にVBAで処理すべき課題です。 それと売上数値を日が変わっては、前のデータに上書きするようだが ビジネスのデータ処理上、前の日のデータが消えてしまうというのは、おかしいやり方です。システム全体のことの経験不足のうちから、エクセルを弄くり回しているように見える。 また、本質問では、日付を横に流しているようだが、エクセルのやりやすいのは縦に流す方式であるjことを、頭においておくこと。 ーー 不可能の例 例データ    A列    B列   C列   D列  E列 (1)3月1日 0 (2)A売上 B売上 平均 (3)10      20 15 15 ーー A1にはそれぞれの売上発表日を入れます(上書き、2日には3/2とA1に入れる) A3,B3には売上を入れる。 C3には平均を出す。 E3には =IF(COLUMN()-5=$A$1-"3/1",$C3,"") と入れる。この式は1日の日付で増加で1列右に動くようにしている。 この段階ではこれでよい。 3/2 日になった。A1に3/2を入れると、瞬間にE列だった15がF列に移る。 3/2日分の売上20,30をA,B列に入れると今度はF列にただしく 25が入る。しかしE列の15が残らない。 これはこの方法が、したいことに対し、仕組みが適当でないのだが、じゃあ適当な方法と言われても、根本的に質問の表組を変えないと良い方法はないだろう。 毎日1セルだけ式を消していけば(3月2日の日付けを入れる前に前日分E3を式を消して値化してしまう)、質問をかなえるようにはなる。しかし面倒だ。 やはり各日(A列を列挿入し)各行に日付を入れて)の売上を下の行に順次残す形で考えないとダメだろう。

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

#1です。 ゴメンなさい。123行目と書かれているので、1ヶ月分だけではないですね、 するとDAY(TODAY())は使えませんね。 > E~G列には123行目の平均のコピーが入っているとゆう状態です。 これが、123行のE~G列という意味なら E1に =IF(ROW()>=3,$C1,0) F1に =IF(ROW()>=2,$C2),0) G1に =$C3 として、下にコピー。 でも、本当はどんな表なんだろう...

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

#1です。だとするとまだ根本的な説明が足りません。 123行目のE列、F列、G列には何が入るのですか? 推理直を最大限発揮して、初心者さんが陥りそうなことを想像すると 2行目以降のE列、F列、G列には何も入らず、1行目のE列、F列、G列に 今日と前2日の平均を表示したいのでしょうか? 「今日」という時点を何で把握するのでしょうか? 単純には「今日」は「TODAY関数」で取得できます。 しかし、これと比較する対象が表の上に有りません。 行だけで日付を判断してよいなら、 もし、A列の前に各行のデータに対する日付が入っていて、  A列 B列 C列 D列 E列  F列  G列 1 数  数  平均 空白 2日前 1日前 今日  2 数  数  平均 空白 3 数  数  平均 空白 4 数  数  平均 空白 としてよいなら、 E1に =IF(DAY(TODAY)()>=3,INDEX(C:C,DAY(TODAY)())-2,1),0) F1に =IF(DAY(TODAY)()>=2,INDEX(C:C,DAY(TODAY)())-1,1),0) G1に =INDEX(C:C,DAY(TODAY)()),1) とします。 しかし、別の月に開くとうまく働きません。 そこまでするには、別の工夫が必要ですし、 ご質問の内容からだけでは、式が作れません。

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

 A列 B列 C列 D列 E列 F列 G列 1 数  数  平均 空白  2 数  数  平均 3 数  数  平均 として、 E1に「=$C$1」 F1に「=$C$2」 G1に「=$C$3」 として、 1日目に1行目データを入力 2日目に2行目データを入力 3日目に3行目データを入力 4日目に1行目データを上書き入力 5日目に2行目データを上書き入力 6日目に3行目データを上書き入力 と繰り返していけばよいのでは?

711get
質問者

補足

返事ありがとうございます! すみません…ちょっと説明が足りなかったです… データは100行以上打ち込んでおりまして… なのでA~C列内に別の日のデータを入れるって事はできないんです。A~C列はその日のデータで基本、埋め尽くされます。 なので例を上げると 123行目のデータのC列は A123 と B123 の平均で、E~G列には123行目の平均のコピーが入っているとゆう状態です。 説明不足ですみませんでした。

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

関連するQ&A

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

  • Excelで数式のコピーが出来ない

    簡単な作業ですがどうした訳か数式のコピーが出来ません。長年、同じ方法でやっています。確かにコピー元には数式が入っているのですが貼り付けすると数式ではない値がそのまま出ます。EXCEL2003でやっています。作業はA1…E1のAVERAGEをF1に求めるものですが1行目は計算されますが2行目にF1をコピー/貼り付け又はドラッグしても同じですが同じ数字が出ます。またA列1~100までの値が入っているものだけのCOUNT数にしてもB列~G列も同症状です。こんな事は初めてなのでどなたか教えて下さい。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 AVERAGEやIFをいろいろ組み合わせてみたのですが、どうしても分からないので教えてください。   A   B    C    D    E    F    G   H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 どうかよろしくお願いします。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 先日下記の様な質問をさせて頂いたのですが、もう少し質問したいことがあったのに間違えて解決済にしてしまいました。 どなたか分かる方がいらっしゃいましたら教えてください。    A    B    C    D    E    F    G     H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 という質問に対して、 [H1]=AVERAGE(B1:INDEX(B1:G1,COUNT(B2:G2))) という式を教えて頂いたところ、うまくいきました。 半期分はこれでOKだったのですが、1年分だとHに半期の平均のセルが入るため、うまく表示できません。 ・B~Gが前期、Hが前期の平均 ・I~Nが後期、Oが後期の平均 さらに、Pに全期の平均を入れたい場合はどのようにしたらよいのでしょうか? [P1]=AVERAGE(B1:INDEX(B1:N1,COUNT(B2:G2,I2:N2))) にすると、Hのセルも入ってしまうため、後期に数字が入ると平均値の表示が1つずつずれてしまいます。 何回も申し訳ないのですが、どうぞよろしくお願いいたします。

  • Excelの入力式について

    Excelの入力式について教えてください。 たとえば、A1セル~F1セルに数値が入っていて、G1セルA1+B1の値、H列にC1+D1の値 I列にE1+F1の値としたい場合、 G1セルに数式を入れてH列にコピーするとB1+C1になってしまいます。 上手くやる方法はないのでしょうか。 1列ずつわざわざ空白列を作るのは嫌ですし、たくさんあったら数式を打ち込むのも大変です。。。

  • エクセル:「・」を「スペース」に置換えたいのですが・・・

    お世話になります。 セル:A1に「=B1&"・"&C1&"・"&D1&"・"&E1&"・"&F1・・・」 と式を入れてA列縦にコピーしています。その結果、E列やF列が空白のときなど、ケース(次の例)により 例(1)「○○・△△・□□・・・」は「○○・△△・□□」(最後の「・・・」がいらない) 例(2)「■○・△○・◆◆・◎▼・」は「■○・△○・◎▼」(最後の「・」がいらない) 例(3)「△◎・・◆◆・◎△」は「△◎・◆◆・◎△」(△◎の次の「・・」が「・」となってほしいい) というように、要は余分な「・」を消去したいのです。 尚「置換え」を使うか、「関数」か、「VBA」か私にはどうしたものかよくわかりません。いろいろな方法を教えてくだされば勉強にもなりうれしく思います。 ご指導をよろしくお願いいたします。

  • エクセルの値の照合

    エクセル初心者です。宜しくお願いしますm(__)m 各店舗の売上の入金確認作業を行っています。 シート1と、シート2と照合し、A・B・D・E列が同じ値であれば、シート1から行ごと削除したいのですができますでしょうか。 ※C列は、入金があった際に日付が入ります。 G列は、確認をした際に日付が入ります。 シート1   A    B     C     D      E      F     G  ・・・ 1 店舗   日付   入金日  売上額   手数料  担当   確認日 2 A店   1/5   未収     \10,000   \2,000  田中   3 B店   1/6   未収     \20,000   \4,000  長谷 シート2   A    B     C     D      E      F     G  ・・・ 1 店舗   日付   入金日  売上額   手数料  担当   確認日 2 A店   1/5   2/5     \10,000   \2,000  田中   2/10 3 B店   1/6   2/8     \20,000   \4,000  長谷   2/10 宜しくお願いします!!

  • エクセルの関数を教えて下さい。

    顧客管理表を作成しており、全顧客のうち、実際に売上につながっている顧客数が知りたいです。 A列に顧客名(重複している顧客複数あり) B列に対象サービス C列に売上 A列    B列     C列 顧客a  eサービス  3000円 顧客b  fサービス  2000円 顧客c  gサービス  0円 顧客d  hサービス  1000円 顧客a  fサービス  2000円 顧客a  gサービス  1000円

  • EXCEL VBA 条件による空白挿入

    EXCEL2003を使っています。 以下のように列FGHが空白の行については列ABCを空白を挿入したいのですが数万行あり処理をVBAで自動化したいです。どなたかお力をお貸し下さい。お願いします。 A B C D E F G H 1 1 2 3 4 5 6 7 8 2 1 2 3 4 5 _ _ _ 3 1 2 3 4 5 6 7 8 4 1 2 3 4 5 _ _ _ 5 1 2 3 4 5 6 7 8 ↓ A B C D E F G H 1 1 2 3 4 5 6 7 8 2 _ _ _ 1 2 3 4 5 3 1 2 3 4 5 6 7 8 4 _ _ _ 1 2 3 4 5 5 1 2 3 4 5 6 7 8

  • Excel 隣接しない列に一発で値貼り付け

    Excel 隣接しない列に一発で値貼り付け 隣接する列に表示されたデータを、同じシートの隣接しない列に一発で値の貼り付けがしたいのですが、可能でしょうか?   A     B     C    D    E         1 チェック タイトル 名前1  名前2 説明 2 ○    野菜   人参   牛蒡  これは根菜類 3 ○          胡瓜       うり科の野菜です 4 5 ○    果物   バナナ  柿   暖色系の色です   G       H         I     J           K     …… 1 計算式   B列を値貼り付け 計算式   C列を値貼り付け  計算式  …… ■A列  :C列に文字入力がある場合「○」が表示されます     {=IF(OR($C1>""),"○","")} ■B-E列:他のシートの任意のセルの値をコピー     {=IF(ISERROR(INDIRECT("'シート名'!セル")),"",INDIRECT("'シート名'!セル"))} *C列の空白の場合は全ての列が空白である(A列の式はそのため) *C列に文字がある場合のB、D、E列の空白には意味がある。 *コピーではなく値の貼り付けを行いたい。 *貼り付け左記の列は飛び飛びである。 *行の長さは可変する。 今までは、A列を「オートフィルタ」で「○」のみ表示させ、B-E列を1列づつH、J、L、N列へ貼り付けていました。マクロもいろいろ考えたのですが、初心者のため応用が出来ません。 関数でもマクロでも頑張ってトライしますのでお知恵を頂けますでしょうか。 PC環境:Win XP / Excel 2003

専門家に質問してみよう