
自分で関数やVBAコードを作成してみましたが、うまく出来ませんでした。
皆さんならどのようにするかご教授願います。
購入日を元に購入月ごとにDMを送付する為のデータを作成したいです。
ブック:購入履歴
E2 顧客no
F2 顧客氏名
I2 購入日
J2 購入店舗
のデータを元に
ブック:DM送付履歴
E6 顧客氏名
F6 顧客no
G6 購入日
S6 購入店舗
を自動的に入力したいです。
前任者は、フィルターで月ごとに抽出しコピペしてDM送付履歴を作成していました。
どうにか簡単に作業をしたいのですが、関数の組み合わせも上手くできません。
良い方法があれば教えて頂きたいです!
No.5ベストアンサー
- 回答日時:
No.2です。
気になったのでとりあえず作ってみました。
もう不要でしたらスルーしていただいて結構です。
ちなみに伝達事項としては
①購入履歴.xlsmには作業列を設けておりDM送付履歴へコピペしたデータには「コピペ済」と念のため記します。
②該当データをDM送付履歴.xlsxへ貼り付ける際7行目から貼り付けていっています。既存データの削除処理は入れておりません。
③DM送付履歴の上書き保存処理は入れておりません。
④「I2 購入日」の入力パターンを3つ作ってみました。もし該当するものがあれば他の2つはクリアして下さい。該当するものがない時はゴメンナサイ。
Public Sub a()
Dim buf As String
Dim ym As String
Dim cntALL As Double
Dim r1 As Double
Dim r2 As Double
Dim cnt As Double
'//-------------------------------
'ブック名の指定
Const bk1 = "購入履歴.xlsm"
Const bk2 = "DM送付履歴.xlsx"
'-------------------------------//
'//-------------------------------
'シート名の指定(購入履歴)
Const sn1 = "Sheet1"
'シート名の指定(DM送付履歴)
Const sn2 = "Sheet1"
'-------------------------------//
'//-------------------------------
'作業列の指定
Const wkR = "K"
'-------------------------------//
'//-------------------------------
'DM送付履歴の保存パス
Const pth = "C:\xxx\"
'-------------------------------//
With Workbooks(bk1).Worksheets(sn1)
'抽出年月の指定
buf = InputBox(Prompt:="抽出したい年月を入力してください。", Default:="yyyymm")
'作業列をクリア
.Columns(wkR & ":" & wkR).Select
Selection.ClearContents
.Range("A1").Select
'データ数の確認
r1 = 3
cntALL = 0
Do Until Len(.Range("I" & r1)) = 0
r1 = r1 + 1
cntALL = cntALL + 1
Loop
'「DM送付履歴」を開く
If Dir(pth & bk2) <> "" Then
Workbooks.Open pth & bk2
Else
MsgBox "『" & bk2 & "』の指定パスが正しくない可能性があります", vbExclamation
End If
'該当データのコピペ
r1 = 3
r2 = 7
For cnt = 1 To cntALL
'パターン①:購入日が『yyyymmdd』の場合
ym = Left(.Range("I" & r1), 6)
'パターン②:購入日が『yyyy/mm/dd』の場合
ym = Left(.Range("I" & r1), 4) & Mid(.Range("I" & r1), 6, 2)
'パターン③:購入日が『yyyy/m/d』の場合
ym = Left(Format(.Range("I" & r1), "yyyymmdd"), 4) & Mid(Format(.Range("I" & r1), "yyyymmdd"), 5, 2)
If buf = ym Then
Workbooks(bk2).Worksheets(sn2).Range("E" & r2) = .Range("E" & r1)
Workbooks(bk2).Worksheets(sn2).Range("F" & r2) = .Range("F" & r1)
Workbooks(bk2).Worksheets(sn2).Range("G" & r2) = .Range("I" & r1)
Workbooks(bk2).Worksheets(sn2).Range("S" & r2) = .Range("J" & r1)
.Range(wkR & r1) = "コピペ済"
r2 = r2 + 1
End If
r1 = r1 + 1
Next
End With
End Sub
picopico_7様
お礼が遅くなり申し訳ありません!
来月も再来月も同じ作業がありますので、回答頂き本当に感謝ですm(_ _) m
作成して頂いたものと自分の作った物を比べてみると、定義が足りなかった様に思います。フィルタをかけるからと曖昧になっていたようですT^T
作成頂いたものを解読し、来月の作業に向けて再度作成してみます。
ありがとうございました!
No.4
- 回答日時:
No.2です。
誰だって最初は素人ですしVBAで業務を効率化したいと考えられることはとても良いことだと思いますよ。
発送期限が近付いておられ今頃お忙しくされていることと思いますので手が空いている時に以下の内容を教えてください。
こちらでもちょっとやってみます。
①「I2 購入日」の入力形式(yyyy/m/dなど)
②「ブック:DM送付履歴」は6行目がタイトルでデータは常に7行目から上書きで貼り付けて良い?(貼り付け前に存在するデータはクリアされる)
③「ブック:DM送付履歴」の拡張子(xlsxなど)
No.3
- 回答日時:
こんばんは
「作業列」という考え方もあります。
例えば、z列あたりに
=TEXT(G6,"mm")
と関数を入れておけば、日にちは関係なく、「月」だけを拾えます。
これでフィルタを掛ければ、月の指定が楽になります。
これで、記録マクロを試してみてください。
追加のポイントは「今月」なのか「来月」なのかあたりだと思います。
今日(作業日)が何月なのかは下記のコードで拾えます。
Month(Date)
来月なら、
Month(Date) + 1
となります。
回答ありがとうございます!
面倒な事に、1年前の同月に購入された方に送るんです…^^;
あっちもこっちも…と考えていると混乱して頭から湯気が出てきてしまいます´д` ;
とりあえず、締め切りに間に合うよう地道に発送したいと思いますT^T
ありがとうございました!!
No.2
- 回答日時:
こんにちは。
購入日の入力形式が分からないのでアドバイス程度になりますが、マクロを実行させた時に入力ボックスを表示させてあげてはどうでしょう?
例えば購入日がyyyymmdd形式で入力されているならばyyyymmを入力させる入力ボックスを表示させてその値をフィルターの「~で始まる」ものと一致させ、表示されたものを「DM送付履歴」にコピペしてあげてみては?
何か行き詰るようでしたらまた補足をください。
お返事が遅くなり申し訳ありません。
なんとかポップアップで月を選択するようにできましたが、今後は別のファイルを開くことが出来なくなってしまいました(;´Д`A
会社PCの為詳細を掲示できないのですが、素人がVBAで楽しようというのが間違っていたのかなと反省しております。。。
発送期限も迫ってきたので、地道に頑張ろうと思います。
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) マイクロソフト製品のライセンス販売で困ってます 1 2022/06/30 19:52
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- 国産車 車の購入について。 7 2023/02/12 11:59
- その他(ファッション) エルメス ソルドについて 1 2022/07/16 15:12
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- 事務・総務 事務の方教えてください。未経験なのですが、補助の仕事って難しいですか? やはり責任重大ですか? 仕事 2 2023/08/20 13:38
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- 経営情報システム 顧客管理ソフト、どうやって選べばいいのですか? 3 2022/05/15 22:01
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
なんていう性癖なのか知りたい...
-
DC SHOES 渋谷の正規店
-
王子様レベル1(BLゲーム)
-
大学生腐女子に質問です
-
*生徒会の真冬ちゃん…腐女子な...
-
暴太郎戦隊ドンブラザーズのキ...
-
おそ松さんのpixivで見つけた漫...
-
BL好き&オタクが結構私の周り...
-
ヒロアカの麗日お茶子ちゃんっ...
-
コミックジーンのボーイズライ...
-
野川(都内)の花見お薦めスポット
-
クリスタルヒトシ君の相場って?
-
【二次創作について】私の友達...
-
秋元真夏に似てるって言われる...
-
CP(腐)の順番について
-
エクセル 他ブックからのデー...
-
エクセルVBA ユーザーフォーム...
-
おうらん高校ホスト部
-
REBORNについて・・
-
ゲド戦記が腐女子に評判がよか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
幽遊白書の疑問(躯について)
-
エクセルVBA ユーザーフォーム...
-
腐女子が嫌すぎて辛いです
-
ゲド戦記が腐女子に評判がよか...
-
おそ松さんのpixivで見つけた漫...
-
カプとはなんですか??
-
CP(腐)の順番について
-
MSSPってBL・腐向けNGって公言...
-
腐女子の見分け方クイズ
-
黒子のバスケはなぜ腐女子の方...
-
REBORNについて・・
-
腐女子の人は男性が苦手?
-
ライオンキングのメイクついて・・
-
スガシカオのオンリーユー
-
「freebird」のカップリング曲
-
なぜ美形男子キャラオタクで腐...
-
夢小説を読むのをやめたいです...
-
シランカップリング剤について
-
那須雪絵さんの白泉社以外の本
-
マギについて
おすすめ情報
回答ありがとうございます。
記録マクロでひと月分は作成できるのですが、それを毎月同じ作業を行うところまで持っていけませんT_T