• ベストアンサー

10進数を5進数に変換する式

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

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

  • ベストアンサー
  • Yosha
  • ベストアンサー率59% (172/287)
回答No.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)
回答No.1

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【Excel】 シートを指定する式のオートフィル

    こんにちは A1に参照するシート名を記入し、 そのシートのA1の値をB1に表示する式として、 =INDIRECT(A1&"!A1")としました。 同様に、A2のシート名のB2を表示する式 =INDIRECT(A2&"!A2")となるように、 B列にオートフィルした場合、""で囲んでいる部分は、 そのままコピーされてしまいます。 どのようにしたら、""で囲まれた部分も 上手く記入できるでしょうか。 Excel2003です。

  • 文字列変換

    添付図をご覧ください。 範囲 A1:B6 に英語の人名が入力されています、。 セル A7 に式 =SUBSTITUTE(A1," ","") を入力して、此れを右および下方にオートフィルしたものを範囲 A7:B12 に示しています。 此処で質問ですが、最初に下表に示すスペースなしの文字列データがあった場合、此れを上表に示すデータに変換する数式を教えてください。 マクロ音痴の私のために、どうか数式でお願いします。 数式が短くなるなら、配列数式でも構いませんが、補助列(行)等を使用しないことを希望いたします。

  • WEEKDAY 空白も7になってしまう

    オフィス2007です。 A1に2012/3/3といれ、 B1に=WEEKDAY(A1,1)といれ オートフィルすると、 A列に日付が入っていなくてもB列は7になってしまいます。 A列が空白の場合、B列に数式が入っていても空白にするには どのような式を入れればいいでしょうか?

  • 【Excel】複雑な関数式を連続入力するには?(オートフィルは無理?)

    Aの列に「社員名」の項目が並んでいます。 Bの列に「売上数」の数値が並んでいます。  A   B 今川  16 武田  24 上杉  44 今川  33 武田  29 今川  31 … Cの列に社員名を入力し、各社員の売上数をDの列にて求めます。 D1のセルに、「=SUMIF(A1:A99,C1,B1:B99)」 D2のセルに、「=SUMIF(A1:A99,C2,B1:B99)」 D3のセルに、「=SUMIF(A1:A99,C3,B1:B99)」 … と、このように連続入力したいんですが、オートフィル機能を使ったら、 D2のセルが、「=SUMIF(A2:A100,C2,B2:B100)」 と、数値が全部上がってしまうんです。 単純な計算式の連続入力ならオートフィル機能は便利ですが、 例のような複雑な場合だと連続入力が出来なくなってしまいます。 どうすれば、複雑な関数式の連続入力が出来ますか?

  • オートフィルで数式をコピー出来ない

    例えばA列にデータが縦に1列    B列に別のデータが縦に1列    C列でAをBで割って達成率を出したい。 C1のセルが「=A1/B1」となるような式で C1のセルをオートフィルでコピーしたら 思っていたのと違う式でコピーされた。 オートフィルで下が C1=A1/B1 , C2=A2/B2 , C3=A3/B3・・・・のようにその行ごとに計算できる様にするにはどうすればいいでしょう? 設定みたいなものが必要でしたら教えてください。

  • エクセルでユニーク数を求めたいです。

    初めまして。エクセルのユニーク数の求め方について質問させていただきたいです。 ある表の集計をしているのですが、 (A列)文書  (B列)ID    あいうえお   abcde かきくけこ   fghij あいうえお   klmnop あいうえお   abcde さしすせそ   amnbk さしすせそ   lrigks あいうえお   abcde かきくけこ   fghij なにぬねの  nnbkhji こんな感じに並んでいます。 この(C列)ユニーク数を求めたいです。 上記の回答ですと あいうえお→abcdeとklmnopのIDがあるので = 2 かきくけこ→fghij = 1 さしすせそ→amnbkとlrigksのIDがあるので = 2 というようにしたいのですが、 最終的には同エクセル内の別ページで (A列)文書 (B列)ユニーク数 あいうえお     2 かきくけこ     1 さしすせそ     2 なにぬねの    1 このような表にまとめたいです。 説明が下手で申し訳ありませんが、こちらで求められる関数または方法が知りたいです。 最終的にはオートフィルでユニーク数を求められる終わり方にしたいです。 ちなみに「=1/COUNTIFS(A:A,A2,B:B,B2)」こちらの関数では求められませんでした。 また、上記のグラフでピボッドで集計すると延べ数が集計されてしまうので、ユニーク数を求めたいです。 どうか、よろしくお願い致します。

  • エクセルで件数をカウントしたいが・・・

    エクセル2000で作った名簿があります。 A-日付(年間分)、B-名前、C-住所、D-金額の並びです。 月別に何区の人が何人かという統計を作りたいので、 まずオートフィルタでC:住所を選択しました。 次にCOUNTを使ってAやDの数字の入った列を選択したのですが、結果の数字がものすごく大きく、どうもオートフィルタで見えていないセルもカウントしているように見えます。 表示されてる部分だけのセルの数を数えるにはどうしたらよいでしょうか。 ちなみに、A列で(以前教わった)一月分オートフィルで出そうとしましたが、 ”「2002/5/1」以上「2002/5/31」以下”としてもこの場合できませんでした。 2列でオートフィルを使うのは初めてではないのですが・・・ ぜひ御回答よろしくお願いします。

  • ロット数で抽出したい

    多数の品名があり、それぞれ複数のロットのデータがあります。 例えば、 A列  B列      C列 品名A ロットNo.123  データ0.1 品名B ロットNo.235  データ0.5 品名C ロットNo.567  データ3.1 品名A ロットNo.125  データ0.2 品名D ロットNo.425  データ1.2  :    :      : と言う感じで、品名は1000以上、全ロット数は30000ほどあります。 ここでロット数が4ロット以上の品名だけを抽出してデータ解析をしたいのですが、うまい方法はあるでしょうか? 一応、D列の一行目に =countif($A$1:$A$30000,A1) と入力後、オートフィルで全てコピーしてやれば後はオートフィルターで4以上を指定してやればよいのですが、この数式をオートフィルでコピーする際に非常に時間がかかります(20分くらい)。 もっと簡単にやれる方法があれば教えて頂けると助かります。

  • 16進数から2進数への変換

    「Aレジスタに一文字のアスキーコードがあり、これを以下のように二進数に変換してBレジスタに代入する」 Aレジスタ='0’のとき、Bレジスタ=00000000B Aレジスタ='A’のとき、Bレジスタ=00001010B この例題に苦戦してます。。 16進数を2進数に変換するアセンブリ言語を教えてください!!

  • エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。

    エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。 エクセルのセルA1に 「A123B1234X9876C123DD」と入力されています。 これを 「A123-B123X9876-C123-DD」としたいです。 現在 ・B1のセルに=REPLACE(A1,5,0,"-") ・C1のセルに=REPLACE(B1,15,0,"-") ・D1のセルに=REPLACE(C1,20,0,"-") と入れて、D1にできた値の 「A123-B123X9876-C123-DD」 をコピーして E1のセルに「形式を選択して貼り付け」「値」で貼り付けして B1~D1を削除して ・A1のセルには元の「A123B123X9876C123DD」 ・B1のセルには編集後の「A123-B123X9876-C123-DD」 が表示されるようにしています。 このA列が100行もあるとうんざりです。 式をオートフィルでコピーしていくのですが  ・B1に式を入れてオートフィルでB100までコピー  ・C1に式を入れてオートフィルでC100までコピー  ・D1に式を入れてオートフィルでD100までコピー  ・D1~D100をコピーしてE1~E100に「形式を選択して貼り付け」「値」で貼り付け  ・B,C,D列を列削除  3回は式を入れないといけないです。一発で編集する方法はありますでしょうか?

専門家に質問してみよう