以下、写真のとおり、
会社の業務などで、特定のグループ(●がついている人)
だけにメールを送るということをしています。
ExcelのVBAで
このExcelの●がある部分の人のメールだけを抽出したいのですが、
つまり、配列などに、一旦いれる、となりそうなのですが、
・D列にある●があることを条件式で判定し、
・●がある人のメールアドレスを配列に入れる
などの条件式と、配列に入れるVBAの書き方がわかりません。
●がある人のメールアドレスを抽出できれば、
もちろん、フィルタなどを使う、ほかの方法でもかまわないのです。
どなたか、ご教示いただけますでしょうか?
No.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
回答者: tom04様、求めていたもの以上のご回答ありがとうございました。
お礼となります。
わたし自身がVBA勉強中なので、頂いたソースコードを全部把握できない
部分もありますが、おおよそ理解できました。
マクロを1行ずつデバックして勉強し、今後の勉強にも活かしたいと思います。
ありがとうございました。
No.2
- 回答日時:
VBAという以前ですが、D列でソートすれば自動的に該当者のセルが上か下に集まると思うのですけど、そのB列の該当者を手作業でどこかに
貼り付けるというのはダメですか?ご回答ありがとうございます。おっしゃる通りの方法が一番てっとり早いのですが、その方法も検討しましたが、なぜかソートがうまく動かない人がいまして(社内で複数人で使用している状況)おそらく固有の問題かもしれませんが。。。VBAで●を抜き出すという方法を模索してここにご質問させて頂きました。
ご回答いただきありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) エクセル・スプレッドシートで、一定数を超えたらゼロから再累計する方法 8 2022/05/28 03:52
- Visual Basic(VBA) マクロについて教えてください。 4 2023/06/06 09:06
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
エクセルで二つの数字の小さい...
-
LOOKUP関数を使えばいいのでし...
-
VBAで文字列を数値に変換したい
-
PowerPointで表の1つの列だけ...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセル(勝手に太字になる)
-
50人を数回、グループ分けする...
-
エクセルで文字が混じった数字...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
VBA 連続行データを5行ずつ隣の...
-
Excelで、A列にある文字がB列...
-
エクセルで2列のセルを連続して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報