
マクロ初心者です。
IF複数条件についてお聞きしたいのですがよろしくお願いします。
■内容■
E列に入っているデータをF列に条件出力するマクロを作成したいです。
その際、指定したコード(全50条件:01A~50X)以外を全て「その他」にしたいのですが可能でしょうか?
<マクロ>
ActiveSheet.Range("F2:F50").FormulaR1C1 = _
"=IF(OR(RC[-1]=""01A"",RC[-1]=""02B"",RC[-1]=""03C"",RC[-1]=""04D""・・・・・・・,RC[-1]=""50X"",RC[-1]=""""),RC[-1],""その他"")"
■問題■
・条件が50個とたくさんあるためうまく処理されません。条件に上限があるのでしょうか?
・プログラムが長いのと見やすくするため改行をしたいのですが、エラーになってしまいうまくプログラム文中の改行ができない。
何回か試行錯誤してみましたがうまくいきませんでした。
どなたか分かる方がいらっしゃいましたらご助言いただきたいです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
セル式の長さは1024文字までと言う制限があります。
コレに引っかかっていませんか?また、50個の条件式が並んでいたら見づらくって仕方が無いように思えます。
それよりは、50個のコードを作業列(例ではA列)に入れ、E列の各行の値がA列に無ければ「その他」と表示し、あればE列の値をそのまま表示する方が良いと思います。
つまり、この様な式を埋め込んでいくわけです
=IF(ISNA(MATCH(E2,A:A,0)),"その他",E2)
マクロにするとこんな感じです。
ActiveSheet.Range("F2:F50").FormulaR1C1 = "=IF(ISNA(MATCH(RC[-1],A:A,0)),""その他"",RC[-1])"'<- A列にコード一覧が記載されている事
ActiveSheet.EnableCalculation = True '<- 再計算してくれない場合はこの1行もいれる
条件式がかなり長かったので制限にひかかっていたと思います。
同じ値ならその値を返し、違う場合は「その他」を返す。
と言った処理の方がスマートですね。
教えていただきました式を入れてみたのですが・・・
=IF(ISNA(MATCH(E2,A:A,0)),"その他",E2)
違う値の場合に「その他」が反映されず、「0」が反映されて
しまいました。
A列にはコード一覧は入っている状態なのですが、どうしたら良いでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで縦に長い表を印刷
-
エクセルの関数について(日付で...
-
シート保護の状態で行の追加を...
-
EXCELにて複数列を同条件(色)...
-
エクセル マクロ 貼り付け先が...
-
エクセルで空白以外のセルの値...
-
エクセルVBA 複数列をコピーす...
-
一行おきにコピーするマクロが...
-
エクセルで表示された値だけ行...
-
エクセルで行挿入した際、自動...
-
エクセル マクロ 行や列を削除...
-
マクロで値がある列までコピー
-
エクセルでA列セルが空白の時そ...
-
A1セルに入力したら、入力時間...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
Excelの入力規則で2列表示したい
-
エクセルで日付から日にちを削...
-
Excelで同じセルに箇条書きをし...
-
複数の文字列のいずれかが含ま...
-
エクセルで既に入力してある文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
エクセルの関数について(日付で...
-
エクセルで空白以外のセルの値...
-
一行おきにコピーするマクロが...
-
シート保護の状態で行の追加を...
-
Excelの非表示列も含めてコピー
-
エクセルで反転コピー
-
エクセルで行挿入した際、自動...
-
エクセルで表示された値だけ行...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルVBA 複数列をコピーす...
-
特定の桁数を抽出
-
マクロ初心者です、小数点6桁で...
-
エクセルで縦に長い表を印刷
-
エクセル マクロ 貼り付け先が...
-
エクセルで図形を挿入するマク...
-
ある操作後に自動的にセルに斜...
-
Excel 条件に従いセル移動するには
-
エクセルマクロ
-
行数が不規則な一週間ごとの合...
おすすめ情報