教えて!gooにおける不適切な投稿への対応について

エクセルで困っています
エクセル2002使用

A3 表示形式が文字列で”2×103”(3は上付き)
A4 =A3
の様に参照すると上付き表示で無くなってしまいます。
A3セルがVLOOKUPでの返り値になっても、同様に上付き表示でなくなります。
これを防ぐ方法はないでしょうか?

gooドクター

A 回答 (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以下にするのが要件のようでしたので、そのように設定しています。
    • good
    • 0
この回答へのお礼

ありがとうございました。
私の前の質問を考慮していただいたのには感激です。

お礼日時:2004/12/04 10:58

>の様に参照すると上付き表示で無くなってしまいます


当たり前です。書式を上付き文字にしても、値は変わるわけではないこと、=や関数は値に関して引っ張ってきているだけで、書式までは引きずってこないのです。
(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
    • good
    • 0

#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)で指数表示される筈です。
    • good
    • 0

 例えばA1に10x2と入れてB1に[挿入]-[記号と特殊文字]でフォントをArialにして 種類をラテン1補助 文字コード00B3 コード体系UNICODE(16進)にすると、3の上付き文字(記号)がB1に入ります。


 C1で=A1&B1 と入力するとちゃんと2X103(3は上付き)で表示されます。念のため、D1で=C1とやってもちゃんと3乗の部分が上付き文字で表示されます。
 Vlookupで検索するようですが、レコード数だけ乗数の部分をちゃんと指定すればできます。
 指数の部分を分けるの一寸面倒だけど これなら大丈夫です。
    • good
    • 0

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

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

gooドクター

人気Q&Aランキング