[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[766] 同じ列に重複の値を書き換え

KEN [2023/08/17 13:41:24]

お世話になります。

重複の値を見つけ出したい場合はどうすればよろしいですか?

例えば:

2列目

aaa
bbb
ccc
ddd
eee
eee
fff
ggg
hhh
hhh
hhh
iii
jjj
kkk
llll
llll
llll
llll
mmm
nnn



aaa
bbb
ccc
ddd
1
1
fff
ggg
2
2
2
iii
jjj
kkk
3
3
3
3
mmm
nnn

にしたいです。

よろしくお願いいたします。

Re: [766] 同じ列に重複の値を書き換え

あすかぜ [2023/08/17 18:53:44]

マクロを書いてみました。
https://www.asukaze.net/soft/cassava/macro/asukaze/bbs766_20230817.cms

2 列目が 2 行以上同じ値の場合、上から順に 1, 2, 3,... に書き換えます。
隣の行しかチェックしていないので、離れた行に重複があっても無視されます。

このマクロで役に立つでしょうか。

Re: [766] 同じ列に重複の値を書き換え

いっち [2023/08/23 18:35:09]

あすかぜさんが、
>2 列目が 2 行以上同じ値の場合、上から順に 1, 2, 3,... に書き換えます。
>隣の行しかチェックしていないので、離れた行に重複があっても無視されます。

というマクロを提示してくれたので、
2 列目が 2 行以上同じ値の場合、上から順に 1, 2, 3,... に書き換えます。
すべての行をチェックするので、離れた行に重複があっても問題ありません。
というマクロを書いてみました。

変数v と 変数i の考え方は、あすかぜさんのマクロに合わせたつもりです。
始めにあすかぜさんのマクロを理解してから、こちらのマクロを書いてみました。
そのほうが、こちらのマクロは書きやすかったです。

動作確認も、自分ではしました。


// xは、2列目を見る。
x=2;
cell_str = {};
i = 0;
for (y=1;y<Bottom;y++) {
  v = [x,y];
  for (y2=y+1;y2<=Bottom;y2++) {
    if (v in cell_str) {
      break;
    }
    if ([x,y2]==v) {
      i++;
      cell_str[v] = i;
      break;
    }
  }
}
for (y=1;y<=Bottom;y++) {
  v = [x,y];
  if (v in cell_str) {
    [x,y] = cell_str[v];
  }
}

Re: [766] 同じ列に重複の値を書き換え

あすかぜ [2023/08/23 21:09:35]

ありがとうございます。
いっちさんのマクロであれば、離れた行の重複も書き換えられそうです。

スレッド一覧に戻る返信