- ベストアンサー
エクセル 文字列の上付き表示を参照すると上付きでなくなる
エクセルで困っています エクセル2002使用 A3 表示形式が文字列で”2×103”(3は上付き) A4 =A3 の様に参照すると上付き表示で無くなってしまいます。 A3セルがVLOOKUPでの返り値になっても、同様に上付き表示でなくなります。 これを防ぐ方法はないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1さんの回答おもしろいですね。実に感心しました。 マクロで自動的に編集できるんじゃないかと思いましたので、組んでみました。まあ参考程度に。 Sub sisu() Dim inRng As Range, wkR As Range, CdTbl CdTbl = Array(8304, 185, 178, 179, 8308, 8309, 8310, 8311, 8312, 8313) Set inRng = Selection For Each wkR In inRng wkdt = wkR.Value kotae = wkdt / 10 ^ Int(Log10(wkdt) + 1) & "×" & 10 & Int(Log10(wkdt) + 1) hajime = InStr(kotae, "×") + 3 'nagasa = Len(kotae) - hajime + 1 For ix = hajime To Len(kotae) Mid(kotae, ix, 1) = ChrW(CdTbl(Val(Mid(kotae, ix, 1)))) Next ix wkR.Offset(0, 1).Value = kotae Next End Sub Static Function Log10(X) Log10 = Log(X) / Log(10#) End Function 通常の数値表示のセルを選んで、sisuを実行すると隣のセルに指数表記の文字列が入力されます。 質問者さんの前の問題では、仮数部は1以下にするのが要件のようでしたので、そのように設定しています。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>の様に参照すると上付き表示で無くなってしまいます 当たり前です。書式を上付き文字にしても、値は変わるわけではないこと、=や関数は値に関して引っ張ってきているだけで、書式までは引きずってこないのです。 (1)コピーする。手動かVBAで (2)VBAで各々を上付き文字にする など考えられます。 私の他の質問の回答で使った Sub Macro1() For i = 4 To 10 l = Len(Cells(i, "D")) With Cells(i, "D").Characters(Start:=l, Length:=1).Font .Superscript = True End With Next i End Sub をご参考に。 D4:D10の例です。 自身のセルへ、形式を選択して貼りつけ-値で式を消してから実行のこと。 バラバラのセルなら、CTRLキーを押してクリックして選択し下記を実行する。 Sub test05() Dim cl As Range For Each cl In Selection l = Len(cl) With cl.Characters(Start:=l, Length:=1).Font .Superscript = True End With Next End Sub
#2です。 関数の方が使いやすいですよね。 ということで関数版。 Function fnsisu(wkDT) As String Dim wkR As Range, CdTbl Application.Volatile CdTbl = Array(8304, 185, 178, 179, 8308, 8309, 8310, 8311, 8312, 8313) kotae = wkDT / 10 ^ Int(Log10(wkDT) + 1) & "×" & 10 & Int(Log10(wkDT) + 1) hajime = InStr(kotae, "×") + 3 For ix = hajime To Len(kotae) Mid(kotae, ix, 1) = ChrW(CdTbl(Val(Mid(kotae, ix, 1)))) Next ix fnsisu = kotae End Function Static Function Log10(X) Log10 = Log(X) / Log(10#) End Function 数値でA3に6000とか入力されていたら、=fnsisu(A3)で指数表示される筈です。
- zzz2004
- ベストアンサー率0% (0/2)
例えばA1に10x2と入れてB1に[挿入]-[記号と特殊文字]でフォントをArialにして 種類をラテン1補助 文字コード00B3 コード体系UNICODE(16進)にすると、3の上付き文字(記号)がB1に入ります。 C1で=A1&B1 と入力するとちゃんと2X103(3は上付き)で表示されます。念のため、D1で=C1とやってもちゃんと3乗の部分が上付き文字で表示されます。 Vlookupで検索するようですが、レコード数だけ乗数の部分をちゃんと指定すればできます。 指数の部分を分けるの一寸面倒だけど これなら大丈夫です。
お礼
ありがとうございました。 私の前の質問を考慮していただいたのには感激です。