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

Excelの業務効率化のための質問です。
Excelの名簿を使ってメール送信をおこなっておりますが、頻繁に行うため少しでも時短できるようにしたいと考えております。方法はExcelの機能だけでもマクロ使用でも構いません。
現在のメール送信までの流れは以下の通りです。

①オートフィルタを使って、メール送信対象者を絞り込む(フィルタリング項目は10項目程度で、複数を掛け合わせて行います)
②メールアドレスを50人ずつコピーしてメモ帳に貼り付ける
 →あまり多いとサーバー側で迷惑メールと判断されて配信できない可能性があるため50人程度で区切っています。
③Excelの1つのセル内にコピーする
④置換で「改行」を「,」に変換する
⑤WEBメールの送信先にコピーする
という流れでおこなっておりますが、②~⑤の過程だけでも簡素化できればと思います。

<その他条件>
・メールサーバーはハッスルサーバーを使用
・Excel2016を使用
・一度に送るメールは数十件~500件程度
・名簿は固定ではなく随時追加されていきます


メール配信システムも検討しましたが、自分の悩みがすべて解決できるものなのか確信が持てないこと、データの訂正がExcelの方がラクであることや、クチコミで(相手の許可をとってメール配信しているにも関わらず)数人の顧客が迷惑メール報告しただけで問答無用で解約させられたなど、何かと不都合がありそうなので、Excelが一番良いと考えております。
以上、よろしくお願いいたします。

A 回答 (3件)

いえ、そんなことないですよ。


では、最後までやってみましょう。(No.2回答の続きで書きます)

4.セルD2に「 =ROUNDUP(SUBTOTAL(103,$A$2:$A2)/50,0) 」を入力します。
5.B列と同じ分だけ、下方向にコピーします。
6.セルE1に「 =TEXTJOIN(",",TRUE,IF($D$2:$D$1000=$D$1,$B$2:$B$1000,"")) 」を入力しますが、(!!ここ重要)この時、Ctrl + Shift + Enterを押下して入力します。(=配列数式として入力) (完成)
 ⇒ セルD1に、「1」と入力すると最初の50件が出ます。「2」と入力すると次の50件が出ます。

(解説)
*D列に補助列を追加します。SUBTOTAL(103,~)を使い、自分より上方のセルの存在数を数えます。これを50で割って整数に切り上げる事で、50件ずつ、1,1,1…,2,2,2,…,3,3,3,…とカウントします。
*TEXTJOINで指定する配列を、IF関数で絞り込みます。但し、TEXTJOIN関数がきちんと機能するよう、Ctrl + Shift + Enterを押下で配列数式として入力します。
*VBA(マクロ)じゃないと難しいように書いたのは、マクロではSpecialcellsメソッドやHiddenプロパティといった道具が一通り揃っていて、より簡単にできるからです。但し、仕事で使うならマクロは無効にした方が良いので、今回の関数を使う方法で十分良いと思いますよ。
    • good
    • 0
この回答へのお礼

ご丁寧に最後までお付き合い頂きましてありがとうございました!
これでやりたかったことがすべて出来ました。これだけ関数の特性を駆使して複雑なことを出来ることに驚きです。1回1回ではちょっとした時間短縮ですが、よくやる作業だったのでとても助かりました。本当にありがとうございました!!

お礼日時:2019/03/12 00:17

Excel 2016なら、TEXTJOIN関数を使えます。


「 =TEXTJOIN(",",TRUE,$A$2:$A$1000) 」のような書き方で、複数のセルの内容をカンマ(,)で接続した一つの長いテキストを作れます。
これで質問者さんの労力は半減すると思いますが、如何でしょうか。
(回答は以上です。以下は補足です。)

残念ながらこの関数はフィルター非表示セルを含めてしまうので、アドレスリスト原本に直接使えず、何か工夫が必要です。
非表示セルを認識できるSUBTOTAL関数が使えそうなので、例を示します。

(アドレスデータはA列にあるとします)
1.セルB2に「 =IF(SUBTOTAL(103,$A2)>0,$A2,"") 」を入力します。
2.必要なだけ下方向にコピーします。
3.セルC1に「 =TEXTJOIN(",",TRUE,$B$2:$B$1000) 」を入力します。
 ⇒ フィルターをかけたアドレスがカンマ(,)区切りでC1に表示されます。(完了)

*B列に補助列を作ります
*SUBTOTAL(103,~)は件数をカウントする関数で、COUNTA関数と同じですが、非表示セルを無視してくれます。自行が非表示ならゼロ、表示なら1を与えるので、識別に使えます。
(*50件ずつ区切る方法は、別途考えましょう。まず上記まで実施されたら如何でしょうか。最終的には、TEXTJOIN関数とVBAのセルのHiddenプロパティを使った処理の組み合わせが簡便と思います。)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
上記のTEXTJOINとSUBTOTALにて見事に解決しました!
これだけでもかなりの工数が非常に削減されて非常にありがたいです。本当にありがとうございました。

最後に書かれているTEXTJOINとVBAのHiddenプロパティを~というのは、50件ずつ区切るためにはVBA(マクロ?)を使わないと難しいということでしょうか?

お礼日時:2019/03/11 15:43

業務での作業なので、たぶん使えないと思いますが。


②以降の作業は2クリップボード拡張ソフトで可能なことです。
改行をカンマにするだけのために、Excel経由での置換をするのは
無駄な作業だと思いますから。
https://www.gigafree.net/utility/clip/
https://freesoft-100.com/pasokon/clipboard.html

メモ帳経由をするぐらいなら、テキストエディタにコピーして、
改行を置換するようにしたほうが、効率が良いと思います。
メモ帳以外なら、ほとんどのテキストエディタで改行を検索対象に
できますから、利教可能なものを探してみてください。
https://www.vector.co.jp/vpack/filearea/win/writ …

上記のようなソフトの使用が無理なら、Excelのマクロとして処理
すれば可能だと思いますので、別質問として投稿してみて。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。
確かにテキストエディタを使った方が良かったですね。それすら思いつかずお恥ずかしい。
本件については、ふじのくま様のExcel関数を使用する方法で解決できそうです。お時間をとって頂きありがとうございました。

お礼日時:2019/03/11 15:38

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