- 題名・名前・本文は必ず入力してください。
- 題名は、できれば具体的な本文内容がイメージできるものにしてください。
- スパムよけのため、本文中に句読点記号が含まれていない場合にはエラーとなります。 「,」「.」ではなく「、」「。」を使ってください。
- [バグ][要望][質問][済][未] の分類は管理人が後から勝手に付加しています。 書き込み時は意識する必要はありません。
[618] 重複文字をカウント
田中 [2021/03/16 09:35:53]
あすかぜ様
いつもお世話になっております。
B列からK列に、○や△、□の記号を含んだ文字列が並んでいます。
B列目には、記号を含んだ文字列があるが、C列目には、記号を含んだ文字列がない場合も御座います。
1行ずつ記号が何個あるかカウントし、A列に記号が何個あったのかを表示させるマクロを作成したいです。
A列 B列 C列 D列
あいうえお○ かきくけこ さしす△せそ
↓
A列 B列 C列 D列
2個 あいうえお○ かきくけこ さしす△せそ
行は、1行だけであったり、50行の場合もあります。
// t 行 l 列から b 行 r 列までの中から、
// 内容に str が含まれるセルを数えます。
function including(l, t, r, b, str){
count = 0;
for(y = t; y <= b; y++){
for(x = l; x <= r; x++){
if(pos([x,y], str) > 0){
count++;
}
}
}
return count;
}
が応用できると思い、試してみたのですが
上手くいきません。
お手数お掛け致しますが、
ご教授頂けますと幸いで御座います。
Re: [618] 重複文字をカウント
大石剛司 [2021/03/16 10:28:27]
大石です。
マクロの勉強のために作成してみました。
検索文字は2文字まで対応しました。
3文字以上の場合は、同じように追加して下さい。
希望の動作になっていますでしょうか?
テストで作成したデータではOKでした。
// t 行 l 列から b 行 r 列までの中から、
// 内容に str が含まれるセルを数えます。
//function including(l, t, r, b, str){
//行と桁を設定
t = 1;
l = 2;
b = 2;
r = 4;
//検索文字を設定
str1 = "○";
str2 = "△";
//行範囲
for(y = t; y <= b; y++){
//クリア
count = 0;
//列範囲
for(x = l; x <= r; x++){
//検索文字がある
if(pos([x,y], str1) > 0){
//加算
count = count + 1;
}
//次の検索文字がある
if(pos([x,y], str2) > 0){
//加算
count = count + 1;
}
}
//現在行の A列に書込
[1, y] = count + "個";
}
//}
よろしくお願いします。
Re: [618] 重複文字をカウント
いっち [2021/03/17 07:20:48]
実は、今回のような場合は、あすかぜさんが現在開発されている
Cassava Ver2.3β2以降を用いると、快適にスクリプトを書けるので
私も書いてみました。
あすかぜさんへの質問なのにお邪魔して、ごめんなさい。
単に、Cassava Ver2.3β2以降の宣伝だとお考え下さい。
β版なのに、(現在のところ私には)不具合を見つける事が、
できていません。
最近知ったのですが、Cassavaマクロは、コードのインデントが、
スペースやタブだけでなく、全角スペースでも動作するようです。
// Cassava Ver2.3β2以降専用マクロ
// test.cms
// 2個,あいうえお○,かきくけこ,さしす△せそ
// 9個,○△□,△□○,□○△
// 6個,あ△い□うえお○,かきくけこ,さ○しす△せ□そ
// 0個,,かきくけこ,
// 2個,○,あいうえお,△
search_str = "[○△□]";
for (y=Top;y<=Bottom;y++) {
str_count = 0;
for (x=2;x<=Right;x++) {
cell_str = [x,y];
str_len = cell_str.length;
match_pos = cell_str.search(search_str);
while (match_pos!=-1) {
str_count++;
if (match_pos<str_len-1) {
cell_str = cell_str.substring(match_pos+1);
str_len = cell_str.length;
match_pos = cell_str.search(search_str);
} else {
break;
}
}
}
// [1,y] = str_count.toString()+"個";
[1,y] = str_count+"個";
}
// Refresh();
Re: [618] 重複文字をカウント
田中 [2021/03/17 08:57:52]
お世話になっております。
大石様、いっち様
早々のご返信を有難う御座います。
マクロを書いてくださり、有難う御座います。
希望通り、動作致しました。
感謝です。
Cassava Ver2.3β2でも希望通りの動作をしております。
この度は、本当に有難う御座います。
助かりました。
今後ともよろしくお願いいたします。
Re: [618] 重複文字をカウント
あすかぜ [2021/03/17 18:47:09]
無事解決しているようでよかったです。
大石様、いっち様、ありがとうございます。
Re: [618] 重複文字をカウント
田中 [2021/03/23 08:42:27]
あすかぜ様
ご返信ありがとうございます。
みなさまのおかげで無事、解決出来ました。
有難う御座います。
今後とも宜しくお願い致します。