[[20041202224910]] 『16進数⇒10進数⇒16進数変換』(未熟な制御屋) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『16進数⇒10進数⇒16進数変換』(未熟な制御屋)

・・・質問内容・・・
仕事上で、PLC(シーケンサー)でCFカードにPLC内のDM(データーメモリー)を
書き込んで、エクセルにてデーターの修正を行いたいのですが、お力をお貸しください・・・
データー形式はCSVファイルで、データー形式は16進数で入力されます。
・・Sheet1・・メモリーDATA(マスターデーター)

  A      B      C      D      E      F      G      H      I      J 
1  1D4C   639C   639C   1D4C   1D4C   639C   639C   1D4C   1D4C   639C
2
3
・
31 1838   1838   19C8   19C8   1B58  1B58    1DB0   1DB0   490C   490C
32
33

・・Sheet2・・見やすい様に配置換え・・16進数⇒10進数変換

   A        B        C        D        E       F            
1  CODE no.1
2  メモリーDATA                     
3  工程数   X軸     Y軸    
4    1        1D4C       1838    
5    2        639C       1838       
6    3        1D4C       19C8         

現在、上記のSheet2を製作中ですが・・
説明は、Sheet1では、(A〜Jまで10個・・1〜30迄で合計300個がX軸DATA1・31〜60迄で300個がY軸データーとなります。
この配列・16進数では、一目で距離数値がわからないのでSheet2にて工程数・X軸・Y軸と並べて表示させてみました。
使用した命令用語は、B4に=Sheet1!A1 このような命令用語を使ってみました。

16進数⇒10進数変換の E1には、HEX2DEC("B4")を使用できるかなと思っていたのですがうまくいきません・・以前ご伝授頂いた以下の数式
=IF(LEN(B4)<>4,"",

 IF(COUNT(MID(B4,1,1)),MID(B4,1,1),CODE(UPPER(MID(B4,1,1)))-55)*16^3
 +IF(COUNT(MID(B4,2,1)),MID(B4,2,1),CODE(UPPER(MID(B4,2,1)))-55)*16^2
 +IF(COUNT(MID(B4,3,1)),MID(B4,3,1),CODE(UPPER(MID(B4,3,1)))-55)*16^1
 +IF(COUNT(MID(B4,4,1)),MID(B4,4,1),CODE(UPPER(MID(B4,4,1)))-55)*16^0)
を入力したところ上手く数値が表示されました。
が・・・残された、修正用のSheet、修正した10進数を16進数に変換し元のSheet1のDATAを書き換えるにはどうすれば宜しいのでしょうか??

bz8s-tgc@asahi-net.or.jpにメール頂ければ、現在作成中のCSVファイルを送信いたしますので、ご協力ください・・・。

書き忘れてました、使用しているソフトはEXCEL2003 OSはXPです。


 >HEX2DEC("B4")を使用できるかなと思っていたのですがうまくいきません
 どうなりましたか?
 →#NAME? になったのなら、おそらくアドインが組み込まれていないためです。
 ツール→アドインで、分析ツールにチェックを入れます。
 その後、もう一度入力してみましょう。
 詳しくはエクセルのヘルプ「HEX2DEC」を参照ください。
 →180 になったのなら、正解です。
 E1(E4の間違い?)には、=HEX2DEC(B4) と入力すれば 7500 になります。
 (ダブルクォーテーションは不要です)

 HEX2DEC がうまく使えたら、10進数を16進数に変換するのは DEC2HEX です。
 ぜひ、これらのコマンドの使用をお勧めします。
 以上は、Excel2002で確認しています。2003も同じと思います。
 (ちゅうねん)


 >HEX2DEC("B4")を使用できるかなと思っていたのですがうまくいきません
 もちろん、=HEX2DEC(B4)とされたのだと思いますが、メニューのツール、アドイン、分析ツール
 にチェックがありませんと、この関数は、#VALUEを戻します。

 >修正した10進数を16進数に変換し元のSheet1のDATAを書き換えるには
 H列、I列に=DEC2HEX(E4) =DEC2HEX(F4)としておき、E列、F列の値を変更しますと、
 10進法→16進法に換算できます。

 アドインではない数式は、こちらでご覧になれます。↓
[[20041029233959]] 『A1に100と入力するとB1に16進数0064と表示させる』(初心者) 

  A  B   C  D  E      F  G     H       I
           =HEX2DEC(B4) =HEX2DEC(C4)  =DEC2HEX(E4) =DEC2HEX(F4)
4 1 1D4C 1838 1 7500     6200 1     1D4C     1838
           ↓      ↓
           手修正    手修正     =DEC2HEX(E4) =DEC2HEX(F4)
4 1 1D4C 1838 1 7600     6100 1     1DB0     17D4
                          コピーして、もとのところに	
                          形式を選択して貼り付け(値)	(LOOKUP)


上記、アドバイスありがとうございました。
HEX2DEC("B4")・・これは間違いでしたね、16進数を直接("****")と書き込むときに("")を使用するんですね・・勉強になりました。
現在、=HEX2DEC('1'!A1)の様に直接別シートのセルを指定して製作中です。
Sheet1にマスターデーター、Sheet2に編集用(16進数⇒10進数表示)・・ここまではできましたがそこから先に進みません・・
Sheet2で修正をかけると、16進数⇒10進数の計算式は消えてなくなりますよね〜。
Sheet2の計算式は、以後使いたいので消したくはありません。
別シートに、Sheet2の情報をコピーして修正したほうがいいのでしょうか??
その修正した数値をまた、Sheet1 マスターデーターに書き換えたいのですが・・
Sheet1では、上部に記したように、A1⇒I1へデーターが書き込まれていて、
Sheet2では、A4〜↓方向へデーターを書き込んでいます。
仮にSheet3にSheet2をコピーして数値を変更し、Sheet1へ変更した数値を自動書き込み出来るような方法はありませんか??
未熟ながら、インターネットを利用していろいろマクロなどと言う難しい方法を検索していますが、ちんぷんかんぷんで・・サンプル的なものでかまいませんのでお力をお貸しください〜・・・・。よろしくお願いします。

 1.元データのシート(16進)
 2.変換用シート(10進)別シートに手修正前のものを複製
 3.元に戻すシート(16進)
 これらの3個のシートの配置を同じに設定し、3.をコピーして、1.に値貼り付け
 するものとして、2.の数式のあるシートは、手修正前のものを複製しておかれたら、
 どうでしょう?                           (LOOKUP)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.