- ベストアンサー
10進数を5進数に変換する式
A1=1,A2=3,A3=5・・・(10進数)とした場合、B1=1,B2=3,B3=10・・・(5進数)のように変換するときオートフィルで100列まで表示したいのです。 どのような式になるでしょうか。 回答よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>オートフィルで100列まで表示したいのです オートフィルで処理したいとのことなので、関数の組み合わせで解決するようにします。 A列に入る数の最大値が不明なので、最大値を区切って話を進めます。 いずれも B1 に入れオートフィルします。 =MOD($A1,5) : 0~4までの数を表示します。 MAX=4 =MOD(TRUNC($A1/5),5)*10+MOD($A1,5) : 表示 0~44 : MAX=24 これを =MOD(TRUNC($A1/5^1),5)*10^1+MOD($A1,5) のように書き換えます。 ちなみに、最初の MOD($A1,5) は MOD(TRUNC($A1/5^0),5)*10^0 と同じです。 =MOD(TRUNC($A2/5^2),5)*10^2+MOD(TRUNC($A2/5^1),5)*10^1+MOD($A2,5) : 表示 0~444 : MAX=124 ここまで、お分かりかと思いますが、規則性が見えてきましたね。 1桁=5^n 増す毎に、 MOD(TRUNC($A2/5^n),5)*10^n の n を1つずつ増加したものを加算していくだけです。 変換する前の数の最大値は、5^(n + 1) - 1 です。 変換後の桁数は n + 1 です。 n が 6 の式は次の通り。 =MOD(TRUNC($A1/5^6),5)*10^6+MOD(TRUNC($A1/5^5),5)*10^5+MOD(TRUNC($A1/5^4),5)*10^4+MOD(TRUNC($A1/5^3),5)*10^3+MOD(TRUNC($A1/5^2),5)*10^2+MOD(TRUNC($A1/5^1),5)*10^1+MOD($A1,5) ついでに、n と 変換前の数値の最大値を列記します。 n 最大値 変換後の最大値 0 4 4 1 24 44 2 124 444 3 624 4444 4 3,124 44444 5 15,624 444444 6 75,124 4444444 7 390,624 44444444 8 1,953,124 444444444 9 9,765,624 4444444444 実際に扱う最大数によって、式を変更しオートフィルしてください。
その他の回答 (1)
- webuser
- ベストアンサー率33% (372/1120)
10進数→8進数と同じ考えでできるのでは? 5で割り続けて余りを並べるだけです。 何回割れるかはループさせないと分かりませんのでマクロ組む方がてっとり早いですが、 100列までという制限があるので、その桁分を固定で用意すれば良いです。 100÷5=20余り0 20÷5=4余り0 4÷5=0余り4 つまり400です。 3桁で行けます。 MOD(A, 5) = 1桁目 MOD(A÷5, 5) = 2桁目 MOD(A÷5÷5, 5) = 3桁目 です。 MOD(A, 5) × 1 【1桁目】 + MOD(A÷5, 5) × 10 = 【2桁目】 + MOD(A÷5÷5, 5) × 100 = 【3桁目】 なので、 これに少数を切り捨てる細工をして =MOD(A1,5)+MOD(INT(A1/5),5)*10+MOD(INT(INT(A1/5)/5),5)*100