プロが教える店舗&オフィスのセキュリティ対策術

16進数の文字列をアスキーコード表を使用して変換したいと思っています。

例えば
97 98 = ab
99 100 101 = cde

何か良い関数はありますか?
また、文字列長も任意で変わるので、文字列長に応じて任意で
変換したいと思っています。

やはりマクロが必要ですか?

A 回答 (4件)

直接の回答ではありませんが、


どのようなシチュエーションでこのような事がしたいのかお書きになった方が
的確な回答が得られると思います。
末端の状況でチマチマ対応するより、上流で変換してしまった方が楽な時もありますので...
    • good
    • 2

エクセル関数は無いようなので、本件はユーザー関数が最適でしょう


VBEの標準モジュールに
Function h2c(A)
p = Split(A, " ")
s = ""
For i = 0 To UBound(p)
s = s & Chr(Val(p(i)))
Next i
h2c = s
End Function
を入れる。
空白で分離し、数値化して、VBのCHR関数で文字化するだけ。
ーー
例データ
A列  B列
97 98   ab
99 100 101 cde
98 112 115 bps
B1セルに
=h2c(A1)
と入れて下方向に式を複写。
結果上記のとおり。
    • good
    • 1

参考:わたしが使っているバイナリエディター



Stirling
http://www.vector.co.jp/soft/win95/util/se079072 …

16進数とコードがみえる。
    • good
    • 0

まず最初に質問に書かれている数字は10進です。

16進ではありません。ワークシート関数で「97」を「a」に変換するなら
 =CHAR(97)
という関数を使用しますが、文字列長も不定で、しかも10進を使用しているのでコードの桁数も1桁~3桁と不定になってしまいます。

16進数なら2文字ずつ取り出してCHAR関数で文字列にするのが多少楽ですが、それでもも関数だけで実現するのはかなり大変だと思いますので、やはりマクロでユーザ定義関数を作成するのが良いと思います。

以下はサンプルですが、10進文字コード間は半角スペースで区切られていることを前提にしています。また対応する文字コードがない場合のエラー処理は組み込んでいません。必要に応じて追加してください。
(ダンプコードを読む人ならそれくらいして欲しいと思います)

Function DecToChr(ByVal trg As Range) As String
Dim dec() As String
Dim idx As Integer
 dec = Split(trg.Value, " ")
 For idx = 0 To UBound(dec)
  DecToChr = DecToChr & Chr(Val(dec(idx)))
 Next idx
End Function

(使用例)A1セルに
97 98
が入力されているとき、任意のセルに
=DecToChr(A1)

なおマクロは標準モジュールシートに貼り付けてください
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています