Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3316 / 13645 ツリー ←次へ | 前へ→

【62936】前のシートから検索して別の列のあたいにより処理したい ぽち 09/9/24(木) 15:34 質問[未読]
【62937】Re:前のシートから検索して別の列のあたい... Jaka 09/9/24(木) 16:03 発言[未読]
【62938】Re:前のシートから検索して別の列のあたい... ぽち 09/9/24(木) 16:31 発言[未読]
【62939】Re:前のシートから検索して別の列のあたい... Jaka 09/9/24(木) 16:57 発言[未読]
【62941】Re:前のシートから検索して別の列のあたい... ぽち 09/9/24(木) 17:15 発言[未読]
【62943】Re:前のシートから検索して別の列のあたい... ぽち 09/9/25(金) 10:04 発言[未読]
【62948】Re:前のシートから検索して別の列のあたい... Jaka 09/9/25(金) 12:51 発言[未読]
【62950】Re:前のシートから検索して別の列のあたい... ぽち 09/9/25(金) 14:12 お礼[未読]

【62936】前のシートから検索して別の列のあたいに...
質問  ぽち  - 09/9/24(木) 15:34 -

引用なし
パスワード
   はじめまして。

VBAにて、月次の集計処理をする作業をさせたいと思っています。
入力は「○月入力」というシートがMAXで12枚あり、担当者が入力します。
(担当者によって開始時期が異なるため、シート数も異なります。)
集計の際に、マクロを利用し、自動的に「○月集計」というシートを作成します。
【入力】
A   B   ・・・・AM   AN列
区分 商品名     訪問数 契約数
A  あいうえお    2    1
A  かきくけ     5    0
B  さ        1    1
C  たちつ      0    0

という感じです。
今回、集計時にB列の商品名を元に、前月のAM列とAN列の部分を見て、
1以上の数字が入っていれば"○"、0もしくは商品名で同じものが無ければ
空白としたいのですが、その部分でつまづいています。
商品名や区分は変更になることがあるため、並び順等は固定ではありません。
ただし、区分ごとに集計を取るため、集計時に並び替えの作業をさせています。
なお、当月までの集計処理はマクロで動作できています。

【集計】
A   B  ・・・ D  E  F  G  H  I
区分 商品名 当月訪 前月 前々 当契 前月 前々
A  あいうえお ○  ○  ○  ○  ○ ○
A  かきくけ  ○  ○  ○     ○
B  さ     ○     ○  ○
C  たちつ        ○

集計のA列にある区分は、集計の機能で必要なため設けてあるだけなので、
転記の作業際には削除することも可能です。
(VLOOKUP等、使えますでしょうか?)

考えていたら、こんがらがってきてしまったので、まとまりが
ありませんが、宜しくお願いいたします。

【62937】Re:前のシートから検索して別の列のあた...
発言  Jaka  - 09/9/24(木) 16:03 -

引用なし
パスワード
   訪問数や契約数の出し方が良く解らなかったので、
大体。

NDIRECT関数を使えば、集計シートのコピー複製だけでもできそうな気もします。
MATCHやOFFSET、INDEXなどのからみで。

【62938】Re:前のシートから検索して別の列のあた...
発言  ぽち  - 09/9/24(木) 16:31 -

引用なし
パスワード
   >Jakaさん

早速にありがとうございます。

>訪問数や契約数の出し方が良く解らなかったので、
きちんと書かずにすみません。
入力の・・・の列部分は、カレンダーで1日1列となっており、
担当者がそれぞれのセルにリストから「○」や「△」を
選択する形になっています。
それを集計して、AM列とAN列に訪問数・契約数を出しています。

集計シートのコピーにする場合、前月や前々月のシートを
参照できないタイミングがあり、(使用開始月から2ヶ月分ですが)
その部分がネックになっているため、マクロで何とかできないかな?
と考えています。

よろしければ、引き続き、宜しくお願いいたします。

【62939】Re:前のシートから検索して別の列のあた...
発言  Jaka  - 09/9/24(木) 16:57 -

引用なし
パスワード
   ▼ぽち さん:
>集計シートのコピーにする場合、前月や前々月のシートを
>参照できないタイミングがあり、(使用開始月から2ヶ月分ですが)
はっきり言って、実際のシート名を書かないので解りません。

月だけだったら、DateAddでだせますよ。

MsgBox "前月は、" & Month(DateAdd("m", 1, Date)) & "月です" & vbLf & _
    "前々月は、" & Month(DateAdd("m", 2, Date)) & "月です"

【62941】Re:前のシートから検索して別の列のあた...
発言  ぽち  - 09/9/24(木) 17:15 -

引用なし
パスワード
   >Jakaさん
色々とありがとうございます。

>はっきり言って、実際のシート名を書かないので解りません。
申し訳ありません。質問の部分に書いたつもりでしたので・・・。
担当者によって使用開始月が変わるため、全員同じではありませんが、
入力シートが「10月入力」「11月入力」と3月まで。(←ここは全員です)
集計シートはマクロを使用して「10月集計」「11月集計」と後ろに
追加していく形にしています。

シートのインデックスをカウントして、処理を分けようかと考えて
います。
前から2枚分は、固定のシートがあるため、3枚目は当月処理のみ、
4枚目は前月の処理をプラス、それ以降は前々月の処理も行わせる、
というように考えていました。
何月の処理をするかは、Inputboxでユーザーに入力してもらいます。
集計のシートのフォーマットをコピーし、データを転記して、
集計を取った後、アウトラインを削除しています。
以下が作成してみたコードです。
長くて効率が悪いと思いますが、どうぞ宜しくお願いいたします。

'当月の転記および集計
Syuukei:

 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = InputName & "月度集計"
  Sheets("集計").Select '集計用の枠をコピー
  Cells.Select
  Selection.Copy
  Sheets(InputName & "月度集計").Select
  ActiveSheet.Paste
  Range("A3").Select
  
  Sheets(WKN).Select '入力データをコピー
  Union(Range("A3:B" & Rowct), Range("F3:F" & Rowct), Range("AM3:AN" & Rowct)).Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets(InputName & "月度集計").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Range("A3").Select

  '集計計算を実行
  Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(4, 5), _
    Replace:=True, PageBreaks:=False, SummaryBelowData:=True
  Selection.Subtotal GroupBy:=1, Function:=xlCount, TotalList:=Array(2), _
    Replace:=False, PageBreaks:=False, SummaryBelowData:=False
  Cells.Select
  Selection.Copy
  Cells.Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Range("A1").Select
  Application.CutCopyMode = False
  Selection.RemoveSubtotal 'アウトライン削除
  
  Sct = Range("A3").End(xlDown).Row
 
  'If InputName >= 4 Then
    'GoTo Onemonth
Onemonth:
   前月の部分を参照する処理をしたい

  'IF InputName >= 5 Then
    'GoTo Twomonth
    
Twomonth:
   前々月の参照する処理

  'End If

【62943】Re:前のシートから検索して別の列のあた...
発言  ぽち  - 09/9/25(金) 10:04 -

引用なし
パスワード
   よく見たら、間違えがありました・・・。

>  'If InputName >= 4 Then
>  'IF InputName >= 5 Then

ここは、InputNameではなく、
変数「i」にシートインデックスをカウントさせて
いるので、「i」でした・・・。
すみません。

【62948】Re:前のシートから検索して別の列のあた...
発言  Jaka  - 09/9/25(金) 12:51 -

引用なし
パスワード
   インデックス番号でなく、直接シート名で指定したらどうですか。
なぜインデックス番号を使うのでしょうか?

>当月訪 前月 前々 当契 前月 前々
これも素直に○月と書いた方が良いと思いますけどね。

【62950】Re:前のシートから検索して別の列のあた...
お礼  ぽち  - 09/9/25(金) 14:12 -

引用なし
パスワード
   >Jaka さん
色々とご親切にありがとうございます。


>これも素直に○月と書いた方が良いと思いますけどね。

そうですね。おっしゃる通り、その方が数式にも無理がない
形で立てられそうです。
Jakaさんにアドバイスいただいたように、シート名を入れる
ような形で対応することを考えます。

大変、ありがとうございました。

3316 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free