アプリ版:「スタンプのみでお礼する」機能のリリースについて

ある列に(列数は18です:B10~B28)、条件によってABCD・・の記号を付けているのですが、どうしてもダブるものが出てきて
(例えばHが二つ出てきます)困っています。この場合、ダブる記号の下の列の方にダッシュ(’)を付けておくと、次にかけるマクロで処理が可能です。現状では、H’が見当たらないためマクロが止まってしまい、いつもやり直すことになっています。
何とか解消したいのですが、いい方法はないでしょうか?(例えばHが2つあれば下位の方にダッシュを付ける方法)
又、Hそのものの記号がないときがあります。この場合18列の中にHが無いことの確認をしたいのですが、有効な方法がわかりません。
この時は別の対応をするのですが、現状では一度止まってしまいます。大量の資料処理なので止まるとすべてが遅れるので、非常に困っています。
関数でもマクロ対応でも結構です。
教えてください。よろしくお願いいたします。

A 回答 (5件)

詳細が不明なため一般的な意見を述べさせていただきます。


>どうしてもダブるものが出てきて
これは致し方ない事です。
しかし、
Hがダブル(2つ以上ある?)と困る現状が不明です。
普通はそれに対応したマクロを組むべきです。
それに対して、「H’と別のコード(?)を割り当てれば問題ない。」ということですので、2つ目以降の処理は完成しているのでしょうか?
>H’が見当たらないためマクロが止まってしまい
>Hそのものの記号がないときがあります
どのようなマクロを構築したがわかりませんが、if構文を使っていませんか?
通常このような「何かを探して、その行に処理を行う」場合には
Findメソッドで対象を設定するのが一般的です。そうすれば2つ目以降の同じコードはFindNextで対応できます。存在しない場合はNothingになりますので、そこで処理をすればいいのです。
参考になるページを紹介しておきます。他にも「VBA Find」で検索すれば使用例が紹介されていますので、参考にしてください。

【Excel VBA入門】Findメソッドで条件に一致するセルを検索する方法
https://valmore.work/find-cell-by-find/

条件に当てはまるセルを検索する(Find/FindNext/FindPreviousメソッド)
https://www.moug.net/tech/exvba/0050116.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
HとH’にするのは、この記号が、別の列Aの中の最大値がH,二番目に大きい数字がH'と仮定して付けた記号です。その記号からまた別の列Bにある数字を  Vlookupで導き出すようとしています。もしHとH’があれば、次のステップへ簡単に進むのですが、最大値が二個同一の値である場合は、Hが二個になってしまい、 Vlookup で列Bから抽出する機能が働かずマクロが止まってしまうのです。
よって、止まった時は、手動で、列の下の方のHをH’に書き直し、再度マクロをかけなおしています。
データーが大量にあり、いちいち止まっていると大変なロスで、何とかしたいのです。
ご記載のFindメソッドについては、かなり期待できそうで、一度研究してみます。本当にありがとうございました。
On Error Resume Next だと、H’に該当する回答を得られないまま進みますので、最終的にデーターの解析が間違った物になり、失敗します。
ご記載のReplaceの処理は私には難しすぎるようで、今回はパスいたします。
本当にありがとうございました。

お礼日時:2021/04/08 15:54

余計なことでごめんなさいね。


(’)はプライムと言います。
ダッシュはハイフンより長い横線です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
全然知りませんでした。
参考になります。

お礼日時:2021/04/08 15:52

#2です


H’の処理をしないなら 
On Error Resume Next で飛ばす

H’もHと同じ処理をするなら 乱暴かも知れませんが、
Replace(Cells(i, "B"), "'", "")  探す値(条件キー側)の’を消す
For i = ? To ??
 If Cells(i, "???") = Replace(Cells(i, "B"), "'", "") Then
とか、、
    • good
    • 0
この回答へのお礼

ありがとうございます。
On Error Resume Next だと、H’に該当する回答を得られないまま進みますので、最終的にデーターの解析が間違った物になり、失敗します。
ご記載のReplaceの処理は私には難しすぎるようで、今回はパスいたします。
本当にありがとうございました。

お礼日時:2021/04/08 12:07

こんにちは


内容が分からないのですが、
>(’)を付けておくと、次にかけるマクロで処理が可能です。
HやH’が何を意味するのか、他の処理に影響しないのかなどわかりませんが、
どの様な処理なのでしょうか?

内容が分からないので、想像の範疇です。。
マクロが止まる事が最大の問題なのであれば、
かつ、見当たらない場合に処理をしなくて良いのなら、止まるコードの上に
On Error Resume Next で飛ばすのはどうか、、

また、H 取得のループ内にカンターを設けて(FindNextで探している場合など)>2なら希望処理に分けるとか、、?多分ダメ?
Hは関数で取得しているのでしょうか?マクロなら出力時にカウンターを付け ’ を付加するとかかな。

B列に対して一意のデータをリストや連想配列で作成して、その配列で一律の処理を行うとかでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
HとH’にするのは、この記号が、別の列Aの中の最大値がH,二番目に大きい数字がH'と仮定して付けた記号です。その記号からまた別の列Bにある数字を  Vlookupで導き出すようとしているのです。
ところが、最大値が二個同一の値である場合は、Hが二個になってしまい、 Vlookup で列Bから抽出する機能が働かずマクロが止まってしまうのです。
よって、止まった時は、手動で、列の下の方のHをH’に書き直し、再度マクロをかけなおしています。
データーが大量にあり、いちいち止まっていると大変なロスで、何とかしたいのです。
On Error Resume Next だと、H’に該当する回答を得られないまま進みますので、最終的にデーターの解析が間違った物になり、失敗します。
ご記載の【リストや連想配列】の処理は私には難しすぎるようで、今回はパスいたします。
本当にありがとうございました。

お礼日時:2021/04/08 15:53

>列数は18です:B10~B28



その範囲なら、列は1列で行が19行になります。
1行目は項目名とかでデータが18行ってこと?行列の説明はきちんとしてください。

関数で、データ自体に’を付けるのは別セルなどでないと無理かと思います。
それに「H」と「H’」はExcelは別データと判断しますが他の処理に影響はないのでしょうか?
別列で重複のフラグを付ける方がいいかと思うのですが。
    • good
    • 0
この回答へのお礼

ありがとうございます。
列数については、ご指摘の通りで、間違っていました。
今後注意します。
別列でフラグを付ける方法がわからないので、また研究しなおします。
ありがとうございました。

お礼日時:2021/04/08 15:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!