11/5までセール!人気スマホが1円~

以下、写真のとおり、
会社の業務などで、特定のグループ(●がついている人)
だけにメールを送るということをしています。

ExcelのVBAで
このExcelの●がある部分の人のメールだけを抽出したいのですが、
つまり、配列などに、一旦いれる、となりそうなのですが、
・D列にある●があることを条件式で判定し、
・●がある人のメールアドレスを配列に入れる
などの条件式と、配列に入れるVBAの書き方がわかりません。

●がある人のメールアドレスを抽出できれば、
もちろん、フィルタなどを使う、ほかの方法でもかまわないのです。

どなたか、ご教示いただけますでしょうか?

「ExcelのVBAで条件判断で、配列に入」の質問画像

A 回答 (3件)

こんばんは!



他の方が回答されているように、D列でフィルタを掛け表示されているデータのみを別シートにコピー&ペーストではダメですか?
(ただA・B列で重複するデータはそのまま表示されてしまいますが・・・)

VBAになりますが一例です。
A・B列の重複は無視し、D列が「●」のデータのみ別シートに表示する方法にしてみました。
元データはSheet1にあり、Sheet2に表示するとします。
尚、C・D列は無視しA・B列のみ表示しています。
標準モジュールにしてください。

Sub Sample1()
 Dim myDic As Object
 Dim i As Long, lastRow As Long
 Dim wS As Worksheet, myStr As String
 Dim myKey, myR, myAry

  Set myDic = CreateObject("Scripting.Dictionary")
  Set wS = Worksheets("Sheet2")
   wS.Range("A:B").ClearContents
    With Worksheets("Sheet1")
     wS.Range("A1:B1").Value = .Range("A1:B1").Value
      lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
       myR = Range(.Cells(2, "A"), .Cells(lastRow, "D"))
        For i = 1 To UBound(myR, 1)
         If myR(i, 4) = "●" Then
          myStr = myR(i, 1) & "_" & myR(i, 2)
           If Not myDic.exists(myStr) Then
            myDic.Add myStr, ""
           End If
         End If
        Next i
    End With
     myKey = myDic.keys
      myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B"))
       For i = 0 To UBound(myKey)
        myAry = Split(myKey(i), "_")
         myR(i + 1, 1) = myAry(0)
         myR(i + 1, 2) = myAry(1)
       Next i
      Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B")) = myR
     Set myDic = Nothing
wS.Activate
     MsgBox "完了"
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

回答者: tom04様、求めていたもの以上のご回答ありがとうございました。
お礼となります。
わたし自身がVBA勉強中なので、頂いたソースコードを全部把握できない
部分もありますが、おおよそ理解できました。
マクロを1行ずつデバックして勉強し、今後の勉強にも活かしたいと思います。
ありがとうございました。

お礼日時:2019/08/19 02:44

VBAという以前ですが、D列でソートすれば自動的に該当者のセルが上か下に集まると思うのですけど、そのB列の該当者を手作業でどこかに

貼り付けるというのはダメですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。おっしゃる通りの方法が一番てっとり早いのですが、その方法も検討しましたが、なぜかソートがうまく動かない人がいまして(社内で複数人で使用している状況)おそらく固有の問題かもしれませんが。。。VBAで●を抜き出すという方法を模索してここにご質問させて頂きました。
ご回答いただきありがとうございます。

お礼日時:2019/08/19 02:53

市役所などの自治体が行っているパソコン相談で相談したほうが良いと思います。

    • good
    • 0
この回答へのお礼

マクロまではどうなのでしょうか。ご提案ありがとうございます。調べて相談できそうであればそうします。
ありがとうございました。

お礼日時:2019/08/19 02:54

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング