マクロ初心者です。
タイトルのとおりです。
例えば、同じブック内に
【Sheet1】
日付 住所 電話番号 メールアドレス
A B C D
1 2016/9/24 東京都○○ 11-111-1111 aa@goo.co.jp
2 2016/9/24 大阪府○○ 22-222-2222 bb@goo.co.jp
3 2016/9/24 福岡県○○ 33-333-3333 cc@goo.co.jp
4 2016/9/24 愛知県○○ 44-444-4444 dd@goo.co.jp
【Sheet2】
日付 住所 電話番号 メールアドレス
A B C D
1 2016/9/24 愛知県○○ 55-555-6666 ee@goo.co.jp
2 2016/9/24 兵庫県○○ 77-777-7777 ff@goo.co.jp
3 2016/9/24 奈良県○○ 88-888-8888 gg@goo.co.jp
4 2016/9/24 滋賀県○○ 99-999-9999 hh@goo.co.jp
上記のような2シートがあったとしたら、sheet1の日付の列(A列)、sheet2の日付の列(A列)を比較してすべての行が同じ日付であれば、2つの表をマージする仕組みを作りたいです。
表のマージ部分のマクロは完成しているので、2つの列の比較を行う部分を教えてください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>sheet1の日付の列(A列)、sheet2の日付の列(A列)を比較してすべての行が同じ日付であれば
これ自体は、マクロでなくても可能ですね。仮に、マクロに搭載してもよいのですが、
以下の場合は、要するにサンプリングされる日付を求めて、それでCountIf で両方のシートの検索をします。完全なマクロスタイルするなら、もっと別な書き方もあります。
Sub MacroTest1()
Dim smplDate As Variant
Dim Rng1 As Range, Rng2 As Range
Dim flg1 As String, flg2 As String
With Worksheets("Sheet1")
Set Rng1 = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
smplDate = Rng1.Cells(2, 1).Value 'サンプリング日付
'* タイトルがある場合は、 >1 ,ない場合は、0
If Rng1.Cells.Count - Application.CountIf(Rng1, smplDate) > 1 Then '*
flg1 = .Name
End If
End With
With Worksheets("Sheet2")
Set Rng2 = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
If Rng1.Cells.Count - Application.CountIf(Rng2, smplDate) > 1 Then '*
flg2 = .Name
End If
End With
If Len(flg1 & flg2) = 0 Then
MsgBox "Go to Merging Program"
Else
MsgBox flg1 & " " & flg2 & "に日付の違うものがあります。"
End If
End Sub
'//
No.1
- 回答日時:
とりあえず、こんなものでいかがですか?
-----------------------------------------------------------------------------
Sub Sample()
Dim 日付 As Date
日付 = Int(Application.WorksheetFunction.Max(Sheets("Sheet1").Columns(1)))
If 日付 = Int(Application.WorksheetFunction.Min(Sheets("Sheet1").Columns(1))) Then
If 日付 = Int(Application.WorksheetFunction.Max(Sheets("Sheet2").Columns(1))) Then
If 日付 = Int(Application.WorksheetFunction.Min(Sheets("Sheet2").Columns(1))) Then
'マージ処理
End If
End If
End If
End Sub
-----------------------------------------------------------------------------
「Int」は日付に時間を含んでいても誤動作しないように入れています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) エクセルの複数ブックのシートを1つまとめたい 都道府県ごとに47ブックがあり、そのシートのデータを1 5 2022/11/15 14:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンで購入したデーターが...
-
「24日の0時」って・・・
-
回覧板の日付について質問です...
-
「時間」、「期日」、「日付」...
-
履歴書の日付間違いで落ちますか。
-
日付の大小の表現
-
VBA テキストボックスで日付を...
-
Excel で日付入力のプルダウン...
-
差し込み印刷に当日の日付が入...
-
2つの日付の中間の日付 エク...
-
Access 2013 テキストボックス...
-
AccessのDMax関数の複数条件式...
-
ACCESSで日付ごとに自動連番(...
-
メールの最後に日付をいれますか?
-
エクセル 該当行だけを表示した...
-
WEEKDAYが反映されない
-
ACCESSで1月1日~12月31日まで...
-
ACCESSで複数条件でデータ抽出...
-
エクセルで日付別にシートを分...
-
指定の日付以前かつ最新を取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンで購入したデーターが...
-
「24日の0時」って・・・
-
回覧板の日付について質問です...
-
差し込み印刷に当日の日付が入...
-
日付の大小の表現
-
「時間」、「期日」、「日付」...
-
エクセル マクロ 名前を付けて...
-
エクセルで日付別にシートを分...
-
履歴書の日付間違いで落ちますか。
-
EXCELで日付を****年上期、****...
-
エクセルで6ヵ月後を自動入力で...
-
ACCESSで日付ごとに自動連番(...
-
WEEKDAYが反映されない
-
2つの日付の中間の日付 エク...
-
Excelでヘッダに前日の日付を表...
-
エクセルで日付け表示で、明治...
-
ACCESSで1月1日~12月31日まで...
-
アンドロイドスマホ。カメラに...
-
差込印刷 縦書きで和暦(漢数...
-
Excel関数 基準日に一番近い指...
おすすめ情報