【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

現在、下記のようなマクロを作成しようとしているのですが、私の知識では作成することができませんでした。
どなたか、お力添え頂けませんでしょうか。

作成しようとしているマクロは、まず
”aaaa:7BC”
というような文字列があります。
※「”」は含みません。

「:」以降の7BCを10進数に変換して任意のセルに入力したいのです。
イメージとしては添付の画像のような感じです。

マクロに詳しい方、ヒントだけでも頂けませんでしょうか。
よろしくお願いいたします。

「区切り文字以降を16進数を10進数に変換」の質問画像

A 回答 (5件)

こんにちは!


VBAでないとダメですか?
関数の方法になりますけど

投稿しようとしたら・・・
すでに回答が出ていました。

No.1さんとかぶってしまいますが、

↓の画像のようにA列のデータをB列に表示する場合です。

B1セルを
=IF(A1="","",HEX2DEC(MID(A1,FIND(":",A1)+1,10)))
としてオートフィルで下へコピーしています。

元データの「:」以降はとりあえず、10桁まで対応できるようにしています。
以上、参考になれば幸いです。m(__)m
「区切り文字以降を16進数を10進数に変換」の回答画像4
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。
関数でも出来るんですね・・・

お礼日時:2009/08/02 23:03

手計算のやり方を、そのままコードにした下記のようなのもあります。


Sub test01()
y = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
s = 0
k = 1
x = Cells(2, 1) 'データのあるセル
For i = Len(x) To 1 Step -1
If Mid(x, i, 1) = ":" Then
Cells(2, 2) = s '同行B列
Exit Sub
Else
For j = 1 To 15
If y(j) = Mid(x, i, 1) Then
MsgBox j
s = s + j * 16 ^ (k - 1)
k = k + 1
End If
Next j
End If
Next i

End Sub
16進の文字が半角数字0-9か半角大文字A-Fであること。
チェックを入れてない。
結果
C列はエクセル関数で確認
aaaa:7BC19801980
ss:34C51350913509
データがA列で多行あれれば、ForNextで繰り返しする。
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございます。
さまざまな方法で実現可能な事が分かりました。
さっそく作成中です。

お礼日時:2009/08/02 23:04

こんにちは。



例えば、関数なら、右から3文字目までなら、以下のようにします。

=HEX2DEC(RIGHT(A2,3))

マクロなら、例えばこのようにすれば出来ます。
-------------------------------------------

Sub Test1()
  Dim i As Long
  Dim k As Long
  With ActiveSheet
  For i = 2 To .Range("A65536").End(xlUp).Row
    k = InStrRev(Trim(.Cells(i, 1).Value), ":")
    If k > 0 Then
       .Cells(i, 2).Value = Val("&H" & Mid$(Trim(.Cells(i, 1).Value), k + 1))
    End If
  Next i
  End With
End Sub
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございます。
さまざまな方法で実現可能な事が分かりました。
さっそく作成中です。

お礼日時:2009/08/02 23:05

下記でどうでしょうか。


MsgBox WorksheetFunction.Hex2Dec(Split(ActiveCell.Value, ":")(1))
    • good
    • 0

◆マクロではありませんが参考に


B2=HEX2DEC(REPLACE(A2,1,FIND(":",A2),))
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。
関数でも出来るんですね・・・

お礼日時:2009/08/02 23:03

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