特定記号を基に末尾から文字数調整(ExcelVBA)

概要

長文を指定バイト数まで自動で文字数調整を行う

下記画像では1000バイト以上の文言を1000バイト以下に文字数調整を行っています。

上記画像では文章末尾から「<BR>」「。」「!」記号を対象に指定バイト数以下になるように調整します。
↓調整イメージ

◆調整前文言
昔、おばあさんと三匹の子ブタがいました。<BR>
ある時、おばあさんが子ブタたちに言いました。<BR>
「この家にはもう食べる物がないよ!みんなここを出て、幸せをおさがし。」

◆1回目調整(末尾にある「。」までを削除。1000バイト以下になっていない場合は続けて調整
昔、おばあさんと三匹の子ブタがいました。<BR>
ある時、おばあさんが子ブタたちに言いました。<BR>
「この家にはもう食べる物がないよ!みんなここを出て、幸せをおさがし。」

◆2回目調整(更に末尾にある「!」までを削除。1000バイト以下になっていない場合は続けて調整
昔、おばあさんと三匹の子ブタがいました。<BR>
ある時、おばあさんが子ブタたちに言いました。<BR>
「この家にはもう食べる物がないよ!みんなここを出て、幸せをおさがし。」

◆3回目調整(更に末尾にある「<BR>」までを削除。1000バイト以下になっていない場合は続けて調整
昔、おばあさんと三匹の子ブタがいました。<BR>
ある時、おばあさんが子ブタたちに言いました。<BR>
「この家にはもう食べる物がないよ
!みんなここを出て、幸せをおさがし。」


…上記を1000バイト以下になるまで繰り返します。

プログラムを作成した理由

とある求人データの「仕事内容」「待遇福利厚生」等の文章が2000バイト以上の長文で記載されており、
文字数上限値以下(1000バイト以下)に文字数調整する必要がありました。

上記画像では2~6行目の文章だけですが、
毎日1000行以上の文字数調整を行う必要があり、

1文章辺り1分時間がかかるとして…
1000行 × 1分 = 1000分(16.66時間…)
もかかってしまいます…!

アルバイトや派遣社員を複数人雇って
上記の文字数調整をさせていたので、

「え、それ1秒で出来ますよ…!?」
と無駄な作業から解放してあげたかった為。

実装内容&導入方法

下記リンクから「文字数調整ツール」をダウンロードする

ダウンロードしたツールのプロパティを開く

「セキュリティ」の「許可する」にチェックし、
「適応」「OK」ボタンを押す

この作業を行う事でツールが動くようになります。

ツールを開き、
「文字数調整」シートB列「調整前_文章」に文字数調整したい文章を貼り付け
※A列「タイトル」は何も記載しなくとも構いません。

ツール内にはサンプル文章が入っている為、
不要ならば削除してから文字数調整したい文章を貼り付けてください。

※貼り付け前
※貼り付け後

D2セル内の「OverByteDelete」内の第三引数「1000」を調整したいバイト数に修正する

例えば
「500バイト」以下に調整したい場合は
下記のように「500」と設定すれば自動的に「500」バイト以下まで調整されます。

=OverByteDelete(B2,文字数記号指定!$A$3,500)

D2セル関数をD列全体にコピペする

「文字数記号指定」シートA3セルに文字数調整対象記号をカンマ区切りで記載する

下記画像では文章末尾から「<BR>」「。」「!」を対象に指定バイト数以下になるように調整します。

仮に「☆」を追加したい場合はA3セル内に
<BR>,。,!,☆
とカンマ区切りで記載して下さい。

「文字数調整」シートに戻り、E列「調整後_バイト数」が指定バイト数以下になっている事を確認

文章内に指定した記号が殆ど存在しない場合は、
1000バイト以内に収まらない可能性があります。

その場合「文字数調整対象記号」を最適化して下さい。

ソースコード

感想

今回のユーザー関数(マクロ)を作成した事により、
単純作業から解放してあげる事に成功致しました…が、

ある担当者からは
「あの単純作業で半日過ごせていたのになぁ」と嫌味を言われました(笑)

「こんな単純作業していないで、人間らしいクリエイティブな仕事して欲しい」
と思うのは私のエゴなのだろうか?と悩まされた一件でした。

編集履歴

2021/12/30 新規作成

関連記事一覧

PAGE TOP