• ベストアンサー

Excel 10進数と36進数

例えばA1に10進数で数字を入力したとします。 B1にはそれを36進数で表示させたいのです。 B1に関数を書くとしたら、どのように書けばよろしいのでしょうか? また36進数から10進数にする関数も教えていただけませんしょうか。 以上、みなさまの知恵をお貸しください。 よろしくお願いいたします。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.4

セル A1 の十進数の最大値が 35 なら、その三十六進数は次式で1桁表示 =CHAR(A1+48+7*(A1>9)) セル A1 の十進数の最大値が 1295 なら、その三十六進数は次式で2桁表示 =CHAR(INT(A1/36)+48+7*(INT(A1/36)>9))&CHAR(MOD(A1,36)+48+7*(MOD(A1,36)>9)) セル A1 の三十六進数の最大値が1桁の Z なら、その十進数は次式で表示 =CODE(A1)-48-7*(A1>"9") セル A1 の三十六進数の最大値が2桁の ZZ なら、その十進数は次式で表示 =(CODE(LEFT(A1,1))-48-7*(LEFT(A1,1)>"9"))*36+(CODE(RIGHT(A1,1))-48-7*(RIGHT(A1,1)>"9"))

zenota
質問者

お礼

回答ありがとうございます。 私が対象としている数字が膨大な桁数のため関数で処理するのはとても難しいということがわかりました。 別の処理の仕方を考えてみたいと思います。 回答ありがとうございました。

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

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

>36進数から10進数にする関数 一発では式が複雑になるので 16進数の文字列を1桁1セルに分解する その各文字をVLOOKUP関数で数値化する。 SUMPRODUCT関数で各桁の対応ウエイトを掛けあわせて足すと10進数になる。 例データ A1:G2 12hd 13 17 2 1 ーー 49873 ーー 1 36 1296 46656 1679616 B2の式 =36^(COLUMN()-2) 右方向に式を複写する。16進の各桁のウエイト(重み)です。 B1の式 =IF(COLUMN()-1>LEN($A$1),"",VLOOKUP(MID($A1,LEN($A1)+2-COLUMN(),1),$J$1:$K$36,2,FALSE)) 36進で、6桁以下でB-G列とする B1の式 =IF(COLUMN()-1>LEN($A1),"",VLOOKUP(MID($A1,LEN($A1)+2-COLUMN(),1),$J$1:$K$36,2,FALSE)) 右方向に式を複写する。 K-J列に 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 a 10 b 11 c 12 d 13 ・・・ のような対応表を作っておく。 H1の式は =SUMPRODUCT(B1:G1,B2:G2) == 上記でウエイトのセルをシートのB2:G2に作らない場合  H1の式は =SUMPRODUCT(B1:G1,{1,36,1296,46656,1679616,60466176}) のようにも(配列で直に)書けます。 B-G列は作業列を使ったことになり、やっていることが判りやすくなると思います。 ただし、どうしても桁数の少ない場合用です。 上記は、十分にはテストして無いので、よく検算・確認して使ってください。

zenota
質問者

お礼

回答ありがとうございます。 私が対象としている数字が膨大な桁数のため関数で処理するのはとても難しいということがわかりました。 別の処理の仕方を考えてみたいと思います。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

36進の表示だと数字が36個必要です。その数字に何を使うか知りませんが、仮に0~9とアルファベット26文字を使うとすれば、その26文字を数値に対応させる必要があるので、それをどこかでやる必要があります。したがって、A1セルの10進数をB1に関数1つで36進で表示するのは無理です。作業領域を使えばできますが。 この変換をしなくていい、すなわち0~9までの数字2つで36進の1ケタを表すということであれば、たとえば、 =RIGHT("00"&INT(INT(A1/36^4)/36),2)&RIGHT("00"&MOD(INT(A1/36^4),36),2)&RIGHT("00"&MOD(INT(A1/36^3),36),2)&RIGHT("00"&MOD(INT(A1/36^2),36),2)&RIGHT("00"&MOD(INT(A1/36),36),2)&RIGHT("00"&MOD(A1,36),2) とでもすれば、2ケタが36進1ケタで表示されます。これで10進10ケタくらいまで36進に変換されます。もっと桁数がほしければ、関数を伸ばせばいい。 作業領域で対応表を作れば、36進1ケタを1文字で表示できます。 36進を10進に変換するのもできますが、36進をどのように表示するのか決めなければダメですね。

zenota
質問者

お礼

回答ありがとうございます。 私が対象としている数字が膨大な桁数のため関数で処理するのはとても難しいということがわかりました。 別の処理の仕方を考えてみたいと思います。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

各桁を求めて淡々と並べるだけの作業です。 B1:とりあえず最大4桁 =IF(A1>=36^3,MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(A1/36^3),36)+1,1),"") &IF(A1>=36^2,MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(A1/36^2),36)+1,1),"") &IF(A1>=36^1,MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(A1/36^1),36)+1,1),"") &MID("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(INT(A1/36^0),36)+1,1) 戻す方は数しかないのでもっと簡単です。 C1:同上 =SUMPRODUCT((FIND(MID(RIGHT("000"&B1,4),ROW($C$1:$C$4),1),"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")-1)*36^(4-ROW($C$1:$C$4)))

zenota
質問者

お礼

回答ありがとうございます。 IF関数を使うとなると対象の桁数がとても膨大なためネストの限界にひっかかってしまいます。 私の言葉が足りず、申し訳ございませんでした。 回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#146898
noname#146898
回答No.1

標準の関数でできるのはここまで。 http://www.relief.jp/itnote/archives/000925.php 36進数だと外部ツールを使わないとダメだと思います。 http://www.geocities.co.jp/SiliconValley-SanJose/2310/excel/setumei_m/setumei14.htm

zenota
質問者

お礼

回答ありがとうございます。 やはり単発の関数では2,8,10,16進数しかできないみたいですね。 参考URLのツールでは直接入力が出来なく、私が扱う数字が膨大すぎるのでとても効率が良くなかったです・・・。 この点は私の言葉不足で申し訳なく思います。 回答ありがとうございました。

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

関連するQ&A

  • エクセルの表から正の数、負の数を抜き出す方法

    エクセル2003にある数字の羅列を正の数と負の数とに分けたいと思っていますが、 うまくできません。関数などご存じでしたら教えてください。 例 10000 -20000 30000 40000 50000 -60000 -70000 ↓↓↓このようになるようにしたいと考えています↓↓↓↓↓↓ A B C 10000   10000 -20000       -20000 30000   30000 40000   40000 50000   50000 -60000       -60000 -70000       -70000  できるならばA欄に数字を入れたら正の数ならB欄に数字が表示され、 負の数ならC欄に表示されるようにしたいと考えています。 検索したのですがキーワードが違うのか思ったものが探せませんでした。 ご存じの方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • Excel 関数で出来ますか?

    指定範囲内に指定の数字が入力されている場合に1と表示して、 それ以外は何も表示しない関数ってありますか? 例えば A1~A1000の中に5という数字があった場合、 1と表示したいのですが。 =IF($A$1:$A$1000=5,"1","") これで大丈夫かなと思ったのですが、 D1に関数を入力している場合、A1に5が入力されている時にしか1と表示されません。 A2に5が入力されていても1と表示してくれないんです。 "="は"を含む"ではないからダメなのかと思いますが…。 どこをどのように直せばorどんな関数を使えば希望通りに表示されるでしょうか? 皆様の、知恵をお貸しください。 よろしくお願いいたします。

  • VLOOK関数で参照してきた数に、新たに計算関数を入力したいのですがど

    VLOOK関数で参照してきた数に、新たに計算関数を入力したいのですがどうすればいいですか? A1に太郎と入力した時に、C1に1と表示されるようにしました。その時空白だっだセルB1に数字を 入れた時、VLOOK関数で表示されているC1の数字1をB1にいれた数字かけるC1で表示させたいのですが、どうすればいいですか教えてください。

  • EXCEL、文字の数をカウントしたい。

    エクセル関数を使って、文字(100文字以上)の数をカウントしたいのですが、可能でしょうか。 例えば:セルに一つずつ、ABCAAACDを入力した場合に、A=4、B=1、C=2、D=1 のように表示したいんです。 ※Aを数える場合に、IF関数を使ってAのとき1となるように IF(A1="A",1)+IF(A2="A",1)+・・・+・・・のように順次足していけば短い文字であれば可能ですが、文字数が多くなってくると、セル内に関数がはいりきらずに計算できなくなります。別の関数をつかってより簡単に計算できないでしょうか?

  • エクセルでおしえてください

    シート1のA1~A3の合計を、B1にSUM関数で計算させてます。シート2のB1にシート1のB1に関数が入力されていれば1、関数以外の文字や数字が直接入力されている時には0を表示させるにはどうすればいいのでしょうか?。

  • Excelの関数

    Excelでやってみたいことがあるのですが、どんな関数を使っていいかわかりません。手助けしていただけると助かります。 適当な範囲に、適当な数字が入力してあります。 この範囲に指定した数から指定した数の間で、抜けている数字があれば表示する関数は無いでしょうか? たとえば、A1~A3に、1 3 5と入力されているとして、1~5の範囲だと、 2と4を出力してほしいです。

  • エクセル 関数とグラフについて 

    エクセル 関数とグラフについて  <やりたいこと> ・数字が入力されてないセルで#N/A 表示しない ・数字が入力されてないセルのグラフ線を表示しない  | B   |C  | D        | 7|生産数|時間|1台の時間(秒)| 8|100  |  1|     36   | 9| 空  | 空 |    空     | <やったこと> IF(B8=0,NA(),C8*3600/B8) 数字が入力されてないセルのグラフ線が表示されなくなったが#N/Aが表示される。 IF(ISERROR(C8*3600/B8),"",(C8*3600/B8)) #N/Aが表示されないが数字が入力されてないセルのグラフ線が表示されてしまう。 どのようにすれば良いでしょうか? ご指導宜しくお願いします。

  • ExcelのCOUNTA関数で数えた数だけ連番を付けるには

    ExcelでB列から下の行にデータが入力されています。 そのデータ数を数えるために,B4セルに=COUNTA(B5:B100)関数を入力します。 B4セルで数えた数を元にして,A5,A6,A7・・・と下方向にその数まで1,2,3・・・と連番を付けていきます。 もしB4セルの値が0なら連番は付けません。 以上のマクロをシートに貼り付けるにはどのようにしたらよいでしょうか? 教えてください。お願いします。

  • エクセルについて(関数)

    A列に日付を入力することによって、B列に1から3の数字を表示するようにしています。 B列の関数は「=IF(B3>=2008/4/1,(MOD(B3-"2008/4/1",3)+1))」です。 A列未入力の時に「FALSE」の文字が表示されてしまいます。 今まで皆様に教えていただいたものを応用して、やってみましたが、うまくいきません。 A列未入力時に、何も表示しなくするにはどうしたら良いのでしょうか。 よろしくお願いします。 いつも、ありがとうございます。

  • 【エクセル】左隣のセルが「2」となっているセルの数を数えたい。

    いつもお世話になってます。 エクセル2003について、以下の条件を満たす関数式を教えてください。 A列にa、b、c、d、eと5種類の1文字がランダムに入力されています。 B列に1、2、3と3種類の数字1つが同様に入力されています。 ・左右のセルの組み合わせが「a」「2」となっている数だけ数えたいのですがどのような式で計測すれば良いのでしょうか? ・言い方を変えると、右隣が「2」の「b」のセルの数を数えたいのです。 ・オートフィルターは使わないこととします。 たびたびすみません。よろしくお願いします。

専門家に質問してみよう