【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?

A1=1,A2=3,A3=5・・・(10進数)とした場合、B1=1,B2=3,B3=10・・・(5進数)のように変換するときオートフィルで100列まで表示したいのです。
どのような式になるでしょうか。
回答よろしくお願いします。

A 回答 (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

実際に扱う最大数によって、式を変更しオートフィルしてください。
    • good
    • 0

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
    • good
    • 0

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


おすすめ情報