読者です 読者をやめる 読者になる 読者になる

CSVエディタ「Cassava」で複数の指定文字列を含む行以外を削除するマクロ

以前、CSVデータに特化したエディタを紹介しました。

軽量でシンプルなCSVエディタ「Cassava」

 

データ解析のために、一部のデータを削除することがあります。

削除に便利なマクロはエディタ作者様のサイトのサポート掲示板で公開されています。

 

[243] 特定の行の削除 - Cassava Editor サポート掲示板 - あすかぜ・ねっと

指定文字列を含む行を削除

http://www.asukaze.net/soft/cassava/macro/asukaze/bbs243_20120803.cms

指定文字列を含む行以外を削除

http://www.asukaze.net/soft/cassava/macro/asukaze/bbs243_20120804.cms

 

 

[306] Cassava Editorで特定の文字が幾つでも指定してその文字がある行を削除する方法 - Cassava Editor サポート掲示板 - あすかぜ・ねっと

複数の指定文字列を含む行を削除

http://www.asukaze.net/soft/cassava/macro/asukaze/bbs306_20150303.cms

 

 

いずれも、さくっとレコードを削除するには便利なマクロですが、「複数の指定文字列を含む行以外を削除」するマクロが見当たりませんでした。

なので、VB開発経験はまったくありませんが、上記の3つを参考にマクロを自作してみました。

複数の指定文字列を含む行以外を削除
values = InputBoxMultiLine("抽出するキーワードを改行区切りで入力してください");
if (values == "") {
  return;
}

for (y = Bottom; y >= 1; y--) {
  remaining = values;
  delflg = True;
  while (remaining != "") {
    p = pos(remaining, "\n");
    if (p == 0) {
      value = remaining;
      remaining = "";
    } else {
      value = left(remaining, p - 1);
      remaining = mid(remaining, p + 1);
    }
    if (pos([x,y], value) > 0) {
      delflg = False;
      remaining = "";
    }
  }
  if (delflg) {
    DeleteRow(y);
  }
}

それなりに動くと思いますが、ちょっと自信はありません…