質問: excelのvbaで条件判断で、配列に入れる方法 以下、写真のとおり、 会社の業務などで、特定のグループ(●がついている人) だけにメールを送るということをしています。 excelのvbaで このexcelの●がある部分の人のメールだけを抽出したいのですが、 つまり、配列などに、一旦いれる、となりそうなのですが、 ・d列にある●があることを条件式で判定し、 ・●がある人のメールアドレスを配列に入れる などの条件式と、配列に入れるvbaの書き方がわかりません。 ●がある人のメールアドレスを抽出できれば、 もちろん、フィルタなどを使う、ほかの方法でもかまわないのです。 どなたか、ご教示いただけますでしょうか?
回答: こんばんは! 他の方が回答されているように、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