• ベストアンサー

4パタンの置き換え

dim m as integerという変数があります。 (mの取りうる範囲は1~9です。) このmについて、 7だったら5 6だったら4 3だったら3 2だったら1 (以外はそのまま) と置き換えたいのですが、 ifで4回まわすか、caseを使うかしか考えつきません。 何かいい方法はありますでしょうか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

select caseが一番間違いが無くて良さそうに思いますが、イヤなら たとえば dim m as integer m = ■ debug.print array(1, 1, 3, 4, 5, 4, 5, 8, 9)(m - 1) とかで出来ます。 まぁムリヤリすれば dim m as integer m = ■ on error resume next with application m = .index(array(1,3,4,5), .match(m, array(2,3,6,7), 0)) end with debug.print m とかでも。 また詳細な対応表をシートのセルに準備しておき計算させるのも、応用の広い簡便な方法の一つです。

nagahaha
質問者

お礼

早速有り難うございました。 配列を使えばと思っていたのですが、 その使い方が今ひとつ浮かびませんでした。 教えていただいた例を調べてみます。 どちらの例もアトから見てよく分かりますので、良いと思いますが、 debug.print array(1, 1, 3, 4, 5, 4, 5, 8, 9)(m - 1) の方が簡単みたいですね。 とにかく調べて使いこなせるようにしたいと思います。 お世話になりました。

その他の回答 (1)

回答No.2

既出の回答よりお勧めという意味では特にありませんが、次式でも可能。 m = m - IIf(m = 2, 1, 0) - IIf(m = 6, 2, 0) - IIf(m = 7, 2, 0) Debug.Print m

nagahaha
質問者

お礼

早速有り難うございます。 申し訳在りませんが、正直今現在ではどういう考えなのかが全く分かりません。 調べてみます。 1番の回答で解決したのですが、バリエーションということで 知っているに越したことはないかと思いますので。 お世話になりました。

関連するQ&A