[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]
ありがとうございます。
いっちさんのマクロであれば、離れた行の重複も書き換えられそうです。