[[20170716125509]] 『毎月の実績を一つの入力欄から自動入力』(初心者gk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『毎月の実績を一つの入力欄から自動入力』(初心者gk)

はじめまして。お知恵をお貸しください。

毎月の個人ごとの来店件数を月毎に集計しているのですが、月によって来店する人と件数がことなります。
年ごとにまとめるので、1月については表に入力していくのですが、2月以降は対象となる個人を検索し、該当月にデータを入力している状況で、非常に効率が悪いです。しかも、毎月来店するとは限らなく、新規の方も来られます。

現在

個人名  1月  2月  3月  4月  5月 ・・・・・・

 あ   2       1   1
 い       4   3   3   1
 う   3           2    
           ・
           ・ 
           ・
というような表を用いてポチポチと入力しているのですが、例えば、別に入力欄を作って、氏名と月と件数を入れれば該当者の該当月にその件数が自動入力され、該当者がない場合空欄にそのデータが自動入力される若しくは新規に自分で入力するといった方法をとりたいのですができますでしょうか?
もし、良い方法をお知りの方はおしえていただけないでしょうか。よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:unknown >


 自分の家計簿で、毎月同じ費目が有ったりなかったりしているのを
 処理していますけど、それと同じ様な事情なんでしょうかねぇ。

 すると次の事項が気になります。

 入力作業はいつやるんですか? 毎日(ぽちぽち)・翌月初(まとめて)?
 毎月、何名(件)くらい発生しますか?
 その内、新規客は何名くらいですか?

(半平太) 2017/07/16(日) 15:21


入力は翌月中頃にしますが、日によって来る人も違いますし、ひと月に来る回数も異なります。
(初心者gk) 2017/07/16(日) 15:52

 そのお答えではちょっとやる気が出ません。

 他の回答者のレスをお待ちください。

(半平太) 2017/07/16(日) 15:59


記入しわすれてましたがおおよその件数は300〜350程度です。
どなたか良い方法をご存知の方は、教えてください。
(初心者gk) 2017/07/16(日) 16:54

 >別に入力欄を作って、氏名と月と件数を入れれば
 以下のように入力しておいて
 入力シート
     |[A] |[B]|[C] 
 [1] |氏名|月 |件数
 [2] |あ  |  1|   2
 [3] |う  |  1|   3
 [4] |い  |  2|   4
 [5] |あ  |  3|   1
 [6] |い  |  3|   3
 [7] |あ  |  4|   1
 [8] |い  |  4|   3
 [9] |う  |  4|   2
 [10]|い  |  5|   1

 ピボットテーブル機能(挿入→ピボットテーブル)を使用すれば、以下のように表示は可能ですが、
 集計シート
    |[A]        |[B]     |[C]|[D]|[E]|[F]|
 [3]|合計 / 件数|列ラベル|   |   |   |   |
 [4]|行ラベル   |       1|  2|  3|  4|  5|
 [5]|あ         |       2|   |  1|  1|   |
 [6]|い         |        |  4|  3|  3|  1|
 [7]|う         |       3|   |   |  2|   |

 これがやりたいことですか?

 ちなみに私が集計する立場なら、入力シートは月ではなく、
 年月日にしておいて年集計や推移も見ることが可能にしておきますが…

(tata) 2017/07/16(日) 18:28


tata様
ご回答ありがとうございます。
説明が下手ですいません。イメージとしては、先に書いた形式の表

氏名 1月 2月 3月
あ 3


ーーーーーーーーーーー
入力欄 氏名 月 件数

                 あ  3月   3

一つのシートに個人名と各月の来店回数を表す表があり、月によっては前月来店した人と今月新規来店者の人が混在します。
その際、前月来店者には既に名前を入力しているので、その行の入力月に件数を入れますが、新規の人は新たに行を作って該当月に件数をいれます。この時、これまでに来店したことがある人を検索して該当月に件数を入れたり、全件入力したデータを後で集計するのではなく、例えば別のセルに氏名と該当月と件数を入力すれば既に来店している人の行の該当月のセルに件数が自動で入力されるといったしくみができないかと思い、お知恵をお借りしたく質問させて頂きました。

(初心者gk) 2017/07/16(日) 19:46


 やりたいこととは違うようですね。

 他の方にお任せします。
(tata) 2017/07/16(日) 20:27

 このまま放っておくと他の方の回答付かなそうなので、最低限だけ。

 あまりおすすめはしませんが、
 どうしても「そういうしくみ」にしたいなら、マクロを使用することになると思いますが、
 以下のような考え方で作ってみてはいかがでしょうか。

 私は他人に使わせるようなマトモなマクロを組める自信がないので、
 ご自身でエラーでぬよう調べて下さい。

 A2:C2 に 氏名と該当月と件数を入力
 記入される場所は F列からR列と仮定,月名はすでに入力済み,月は全角と仮定

    |[A]       |[B] |[C] |[D]|[E]|[F]   |[G] |[H] |[I] |[J] |[K] |[L] |[M] |[N] |[O] |[P]   |[Q]   |[R]   
 [1]|名前入力欄|月  |件数|   |   |個人名|1月|2月|3月|4月|5月|6月|7月|8月|9月|10月|11月|12月
 [2]|い        |3月|   4|   |   |あ    |    |    |    |    |    |    |    |    |    |      |      |      
 [3]|          |    |    |   |   |い    |    |    |   4|    |    |    |    |    |    |      |      |      
 [4]|          |    |    |   |   |う    |    |    |    |    |    |    |    |    |    |      |      |      

 A2:C2 に 氏名と該当月と件数を入力し終わったら以下のマクロを実行するボタンでも作成する
 もしくはイベントプロシージャを用いて自動実行させる

 Sub Macro1()
 Dim i As Long '行
 Dim j As Long '列

 Dim myRng As Range

 j = Range("G1:R1").Find(Range("B2").Value).Column   'B2セルと一致する月は何列目か調べる

 Set myRng = Range("F:F").Find(Range("A2").Value)    'A2セルと一致する名前が
 If myRng Is Nothing Then                            '存在しなければ
    i = Cells(Rows.Count, 6).End(xlUp).Row + 1      '6列目(F列)の一番下の行+1をiとする
    Cells(i, 6).Value = Cells(2, 1).Value           'i行6列(F列)目に、2行目1列(A2セル)の値、名前を書き込む
 Else                                                '存在すれば
    i = myRng.Row                                   '一致した行をiとする
 End If
    Cells(i, j).Value = Cells(2, 3).Value           'i行j列目に、2行目3列(C2セル)の値、件数を書き込む
 End Sub
 (マクロ実行時に、正しいシートがアクティブでないと正常動作しません)

ご質問いただいてもお返事返せないかと思います。
他の方に期待。
(tata) 2017/07/16(日) 21:38


tata様
お心遣いありがとうございます。お示し頂いたやり方を試してみます。
(初心者gk) 2017/07/16(日) 22:17

 老婆心ながら、
 >このまま放っておくと他の方の回答付かなそう
 と感じた理由について。

 聞かれていることには明確に、簡潔に、漏れなく返事しないと、
 真面目な回答者ほどやる気なくしますよ?

 私みたいなやる気と実力の無い人間が無責任に適当に答えるならともかく、
 回答者が真面目に作ってあげようとしているのに、
 質問者が真面目に答えないなら、やる気が出るわけがありません。

 必要な返事は薄く、余計な(1回言ったことを長々と繰り返す)返事は多い、のでは…

 ハンドルネームに初心者と入っていますが、エクセル等については初心者でも、
 日本語については初心者ではないのでしょう?

 >>入力作業はいつやるんですか? 毎日(ぽちぽち)・翌月初(まとめて)?
 >入力は翌月中頃にします
 「翌月中頃」に 「まとめて」 「前月分」を入力、と推測できる返事ではあるが、
 「前月16日分から当月15日分まで入力」、かもしれないような、「曖昧」な返事。

 >>毎月、何名(件)くらい発生しますか?
 後から
 >おおよその件数は300〜350程度です。
 と答えているものの、当初は
 >日によって来る人も違いますし、ひと月に来る回数も異なります。 
 と返事なし。

 >>その内、新規客は何名くらいですか?
 返事なし。

 ということで、他の回答者は「付き合いきれない」、と思ったのではないでしょうか。
 以後、掲示板に限らず、日常生活・お仕事においても、ご注意なされたほうが良いかと思います。

 私は実力的にこれ以上お付き合いとアドバイスができませんが、
 月あたり300件分を私の提示したマクロで実施するなんて、本当に「おすすめしない」ですよ?
(tata) 2017/07/17(月) 13:06

 目的は「効率的に既存の表へ入力したい」ということでしょうか?
 お力になれるかわかりませんが、今現在わからないところお聞かせください。
 箇条書きで返事ください。

 毎月まとめて入力することはわかりました。
 1)「何」をもとに入力を行っていますか?
   ご来店カードのような、1枚1名の紙ですか?    ・・・2)へ
   もしくは、集計済みのレポートのような紙ですか? ・・・3)へ

 2)田中1回目 鈴木1回目 田中2回目 伊藤1回目・・・
   のように、数えてから入力しているのですか?   ・・・4)へ
   それとも、田中 鈴木 ・・・とまとめて入力して
   後から集計していますか?            ・・・5)へ

 3)集計済みレポートはエクセルに取り込めるデジタルデータ(CSV等)ですか?

 4)まとめて入力する方法へ変更はできませんか?

 5)1月〜12月まで累積させることはできませんか?

   基本はtataさんと同じ考え方です。
   ピボットではなく、計算式にすることで、既存の表レイアウトを崩さず使用できるはず。

   以下個人名を累積させて集計する方法の提案です。
   件数が300〜350件とのことですが、
   集計後=個人名の数(一意)
   集計前=のれんをくぐった数(重複)
   で全く数が違うと思いますが、以下の例では100名、6000行までなら実用的に使えるかなと思います。

 1行目手入力 B列と1行目の月は半角全角等合わせてください。
 A列 手入力 姓と名のスペースを半角・全角・なし のいずれかにあわせてください。
 B列 手入力 
 C2  =IF(COUNTIF($A$2:A2,A2)=1,ROW(),"") ・・・新規を自動的に表に反映させるための作業列
 D2  =IF(COUNT(C:C)<ROW(A1),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) ・・・新規を自動で追加する計算式
 E2  =IF($D2="","",COUNTIFS($A:$A,$D2,$B:$B,E$1)) 集計する計算式 必要範囲にコピー

     |[A] |[B]|[C]   |[D] |[E]|[F]|[G]|[H]
 [1] |氏名|月 |行番号|氏名|1月|2月|3月|4月
 [2] |鈴木|1月|     2|鈴木|  1|  1|  2|  0
 [3] |田中|1月|     3|田中|  1|  3|  1|  2
 [4] |斉藤|1月|     4|斉藤|  2|  2|  0|  1
 [5] |伊藤|1月|     5|伊藤|  1|  0|  2|  3
 [6] |斉藤|1月|      |小林|  1|  1|  0|  0
 [7] |小林|1月|     7|    |   |   |   |   
 [8] |田中|2月|      |    |   |   |   |   
 [9] |斉藤|2月|      |    |   |   |   |   
 [10]|鈴木|2月|      |    |   |   |   |   
 [11]|小林|2月|      |    |   |   |   |   
 [12]|田中|2月|      |    |   |   |   |   
 [13]|斉藤|2月|      |    |   |   |   |   
 [14]|田中|2月|      |    |   |   |   |   

   
(稲葉) 2017/07/17(月) 14:16

tata様
ご指摘ありがとうございます。
初めてのことで、要領を得ず、お手を煩わせてしまいまい申し訳ありませんでした。以後注意したいと思います。

稲葉様
ご回答ありがとうございます。
ご質問頂いた件について

1)集計済のレポートです。
3)紙媒体での情報になります。

まだ試行錯誤中ですが、お示し頂いた内容を試してみます。
(初心者gk) 2017/07/17(月) 14:50


 >1)集計済のレポートです。 
 >3)紙媒体での情報になります。 
 であれば、もう少し集計?を簡素化できるので、こういうのではどうでしょう?
 毎月のデータはA/B/C列に積み重ねて入力するだけです。
 すでに7月なので、8月以降のデータを入力して、8月から計算式としてもよいかと。

 A/B/C列 手入力
 D2      =IF(A2="","",A2&"_"&B2) ・・・一意のキー G列の計算式で検索されるデータ
 E2      =IF(COUNTIF($A$2:A2,A2)=1,ROW(),"") ・・・新規を自動的に表に反映させるための作業列
 F2      =IF(COUNT(E:E)<ROW(A1),"",INDEX(A:A,SMALL(E:E,ROW(A1))))  ・・・新規を自動で追加する計算式
 G2      =IF($F2="","",IFERROR(INDEX($C:$C,MATCH($F2&"_"&G$1,$D:$D,0)),0))  ・・・集計ではなく、参照

     |[A] |[B]|[C] |[D]     |[E]   |[F] |[G]|[H]|[I]|[J]
 [1] |氏名|月 |件数|キー    |行番号|氏名|1月|2月|3月|4月
 [2] |鈴木|1月|   1|鈴木_1月|     2|鈴木|  1|  1|  2|  0
 [3] |田中|1月|   1|田中_1月|     3|田中|  1|  3|  1|  2
 [4] |斉藤|1月|   2|斉藤_1月|     4|斉藤|  2|  2|  0|  1
 [5] |伊藤|1月|   1|伊藤_1月|     5|伊藤|  1|  0|  2|  3
 [6] |小林|1月|   1|小林_1月|     6|小林|  1|  1|  0|  0
 [7] |田中|2月|   3|田中_2月|      |    |   |   |   |   
 [8] |斉藤|2月|   2|斉藤_2月|      |    |   |   |   |   
 [9] |鈴木|2月|   1|鈴木_2月|      |    |   |   |   |   
 [10]|小林|2月|   1|小林_2月|      |    |   |   |   |   
 [11]|伊藤|3月|   2|伊藤_3月|      |    |   |   |   |   
 [12]|鈴木|3月|   2|鈴木_3月|      |    |   |   |   |   
 [13]|田中|3月|   1|田中_3月|      |    |   |   |   |   
 [14]|斉藤|4月|   1|斉藤_4月|      |    |   |   |   |   
 [15]|伊藤|4月|   3|伊藤_4月|      |    |   |   |   |   
 [16]|田中|4月|   2|田中_4月|      |    |   |   |   |   
(稲葉) 2017/07/17(月) 15:36

稲葉様
ありがとうございます。今回提示して頂いたものを利用して使っていきたいと思います。
面倒くさい質問に時間を割いてお答え、お付き合い頂き、ありがとうございました。
(初心者gk) 2017/07/17(月) 15:59

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.