アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ初心者です。
タイトルのとおりです。
例えば、同じブック内に
          【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件)

>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
'//
    • good
    • 0

とりあえず、こんなものでいかがですか?


-----------------------------------------------------------------------------
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」は日付に時間を含んでいても誤動作しないように入れています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!