最終来店日別・顧客番号順の管理表を作成したいと考えております。
表1・初日データ
行番号 列番号 G 列番号 H
顧客番号 最終来店日
6 100 2011-11-09
7 30 2011-11-09
8 500 2011-11-09
9 200 2011-11-09
10
~
1000
表2・2日目データ
行番号 列番号 G 列番号 H
顧客番号 最終来店日
6 150 2011-11-10
7 500 2011-11-10
8 10 2011-11-10
9
~
1000
表3・来店日管理表
行番号 列番号 B 列番号 E 列番号 F
顧客番号 最終来店日 来店回数
6 10 2011-11-10 1
7 150 2011-11-10 1
8 500 2011-11-10 2
9 30 2011-11-09 1
10 100 2011-11-09 1
11 200 2011-11-09 1
12
~
1000
●〔表1〕・〔表2〕のデータから、〔表3〕のような〔来店日管理表〕の作成方法を教えてください。
1・初日
1・初日に〔表1〕のデータを〔表3〕に表示し、〔列番号 F〕に来店回数を〔1〕と表示する
2・〔最終来店日〕別・〔顧客番号順〕に表示する
3・〔表1〕のデータを消去する
2・2日目
1・〔表3〕のデータと〔表2〕のデータを統合して、初来店者は〔列番号 F〕に来店回数を 〔1〕と表示する
複数回来店者は、〔列番号 F〕に来店回数を〔前回回数+1〕して表示する
2・〔最終来店日〕別・〔顧客番号順〕に表示する
3・〔表1〕のデータを消去する
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
こんばんは!
2日目の
>3・〔表1〕のデータを消去する
は
>3・〔表2〕のデータを消去する
だと解釈しての一例です。
表1はSheet1・表2はSheet2にあり、Sheet3にまとめるようにしてみました。
「初日」と「二日目」の二つのマクロになりますので、「初日」のマクロから実行してみてください。
Sub 初日()
Dim i, j, k As Long
Dim ws1, ws3 As Worksheet
Set ws1 = Worksheets(1)
Set ws3 = Worksheets(3)
j = ws1.Cells(Rows.Count, 7).End(xlUp).Row
k = ws3.Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
If k > 5 Then
Range(ws3.Cells(6, 2), ws3.Cells(k, 6)).ClearContents
End If
ws3.Columns(5).NumberFormatLocal = "yyyy-m-d"
For i = 6 To j
If WorksheetFunction.CountIf(ws3.Columns(2), ws1.Cells(i, 7)) = 0 Then
With ws3.Cells(Rows.Count, 2).End(xlUp).Offset(1)
.Value = ws1.Cells(i, 7)
.Offset(, 3) = ws1.Cells(i, 8)
.Offset(, 4) = 1
End With
End If
Next i
k = ws3.Cells(Rows.Count, 2).End(xlUp).Row
Range(ws3.Cells(6, 2), ws3.Cells(k, 6)).Sort key1:=ws3.Cells(5, 5), _
order1:=xlDescending, _
key2:=ws3.Cells(5, 2), order2:=xlAscending
i = ws1.Cells(Rows.Count, 7).End(xlUp).Row
Range(ws1.Cells(6, 7), ws1.Cells(i, 8)).ClearContents
Application.ScreenUpdating = True
End Sub
Sub 二日目()
Dim j, k As Long
Dim ws2, ws3 As Worksheet
Set ws2 = Worksheets(2)
Set ws3 = Worksheets(3)
Application.ScreenUpdating = False
For j = 6 To ws2.Cells(Rows.Count, 7).End(xlUp).Row
If WorksheetFunction.CountIf(ws3.Columns(2), ws2.Cells(j, 7)) Then
k = WorksheetFunction.Match(ws2.Cells(j, 7), ws3.Columns(2), False)
With ws3.Cells(k, 5)
.Value = ws2.Cells(j, 8)
.Offset(, 1) = ws3.Cells(k, 6) + 1
End With
Else
With ws3.Cells(Rows.Count, 2).End(xlUp).Offset(1)
.Value = ws2.Cells(j, 7)
.Offset(, 3) = ws2.Cells(j, 8)
.Offset(, 4) = 1
End With
End If
Next j
k = ws3.Cells(Rows.Count, 2).End(xlUp).Row
Range(ws3.Cells(5, 2), ws3.Cells(k, 6)).Sort key1:=ws3.Cells(5, 5), _
order1:=xlDescending, _
key2:=ws3.Cells(5, 2), order2:=xlAscending
j = ws2.Cells(Rows.Count, 7).End(xlUp).Row
Range(ws2.Cells(6, 7), ws2.Cells(j, 8)).ClearContents
Application.ScreenUpdating = True
End Sub
※ 別Sheetでマクロを試してみてください。
※ 的外れならごめんなさいね。m(_ _)m
tom04様
ありがとうございました。
2日目の
>3・〔表1〕のデータを消去する
は
>3・〔表2〕のデータを消去する
だと解釈しての一例です。
●申し訳ございません、当方の間違いでした。
最初に三枚のシートで作成しました。
次に一枚のシートで作成しました。
いずれも、考えていましたように作成することが出来ました。
此れもご指導のおかげと感謝いたします。
一枚のシートでの作成をしておりましたので、御礼が遅くなりお詫び申し上げます。
今後ともご指導のほど宜しくお願い致します。
No.2
- 回答日時:
こんなの課題を丸投げで、この質問コーナーをシステム作成の下請けと考えていないか。
一番大切なことは、>表1・初日データ>表2・2日目データ が別シートどまりか、別ブックにあるのか書いてない。
量的に出来るなら、集約データ表を1つのシートに作ってはどうか。
ーー
同一ブック内の別シートにあるなら
Sub test01()
Dim sh
For Each sh In Worksheets
d1 = sh.Range("A65536").End(xlUp).Row
d2 = Worksheets("sheet4").Range("A65536").End(xlUp).Row
If sh.Name <> "Sheet4" Then 'Sheet4 は集約シート
sh.Range("A2:C" & d1).Copy Worksheets("Sheet4").Range("A" & d2 + 1)
End If
Next
End Sub
3シートの例でテストしたが、いくつあってもコードは変わらないで良い。Sheet4のシート名は「集約」とでもすれば良い。
各シート第1行目は項目見出し行とする。
ーー
そそれが済めば、集約シートで、顧客番号+最終来店日でソートとして、望みの表にするコードを考えたら。ぐっと易しくなる。
別ブックの場合は1つのフォルダの中にブックを集め(手操作)どうしたら集約できるか考えること。
Googleででも「VBA フォルダ エクセルファイル 集約」で照会すれば沢山記事が出る。わたしも何回も回答している
FAQだ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
access2021 強制終了してしまう
-
access2021 VBA メソッドまたは...
-
Access Error3061 パラメータが...
-
accessデータを指定したExcel、...
-
実行時エラー3131 FROM 句の構...
-
AccessVBAで任意の複数リンクテ...
-
Accessのスプレッドシートエク...
-
Accessレポートのチェックボッ...
-
accessの代わりになるもの
-
Accessのリンクテーブルのパス...
-
Access IF文でテーブルに存在し...
-
access クエリ yes/no型のクエ...
-
Access VBA でHTML文を表示したい
-
accessでlaccdbファイルが削除...
-
accessについて(超初心者です)
-
アクセス レポートを開いたとき...
-
Microsoft365にAccessってあり...
-
Access DAOのExecuteメソッドの...
-
Accessのクエリで、replace関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルの最終ページだけを自...
-
EXCEL VBA データを抽出して別...
-
ms エクセル 2003で複数データ...
-
エクセルに最初からある既存の...
-
マクロや関数で来店管理表を作...
-
Caps Lockキーの解除
-
Excel2010の並べ替えで行の高さ...
-
リース初心者です 利子率の計...
-
エクセルで複数の勤務時間ごと...
-
エクセル関数で {=TABLE(,セル...
-
Excelでカーソルが逆に動く
-
エクセルで作った書類に、パン...
-
エクセルで離れたセルを離れた...
-
60進法で複数セルの足し算、引...
-
エクセルの行高さが、挿入作業...
-
プルダウンで選択すると隣のセ...
-
オーバレイ機能を解除する方法は?
-
至急! Excelで歩合計算
-
VBA 条件が一致した場合の...
おすすめ情報