![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
エクセルは62E9と入力されると指数形式の数値と見なします。
62×10^9 = 6.2×10^10
です(「^」はべき乗)
これはエクセルの仕様ですからいかんともしがたいです。解決法は-Jelly-さんがやられている方法の先頭に「'」をつけて文字列にするか、はじめから入力セルの書式を「文字列にする」ことしかないと思います。
力業でマクロを使って、とも考えましたが「62E9」と入力した時点でEXCELは「62000000000」という値と「6.2E+10」という表示形式に変換してしまいますので、元の「62E9」という形式に戻すことができません。ですからマクロでも救済できません。
これが不動小数点なんとかとかいうのでしたっけ?
まさかこんなところで躓くとは…
>力業でマクロを使って
実は自分も最初そう思いました
でも裏でそうしたところで、いざ実行すれば、
実行した数字がエクセルの上でまたどうせ62000000000に戻るんだろうとも思いましたが・・・
諦めるしかなさそうな回答ありがとうございました
中途半端な回答をもらってまた無駄な時間を浪費するよりも、
これで諦めがつきます…
No.9
- 回答日時:
#7のzap35 さん、ご指摘、おっしゃる通りでした。
私のマクロは失敗でした。(^^;
まあ、こんなことは、もともと、書式を文字列[@]にしていれば済む話なので、デフォルトの状態で、なんとかしてほしいというのは、もとが無理ですね。既成ソフトウェアで、仕様の変更することは一般的には無理な話で、常識的には、ユーザー側の応用力というか、適応しかありません。
今回の質問は、どこかで、早い時点で、既に解答として結論は出ているような気がします。私のマクロは、実験的な意味合いしか持ちません。
というか、私自身なら、ExcelやWordでうまくいかないものは、さっさと別のものを考えますね。それに、どんなものも、基本は、テキストファイルですしね。
でも、マクロで不可能とは、私はいいません。私の能力が足らないだけです。
ある方のマクロを見ると、あらたなワークシートイベントや特別なイベントを作っているので、何事にも不可能ではないって思えてくるのです。ただ、コードとしては、実用度はゼロで、今のバージョンでは応用力はほとんどないと思えるのですが。(^^;マクロとしては、今後、あまり、API関数に頼るというよりは、新たな、.Net Framework に依存していくようになるのだろうとは思います。
書式表示の変換の自動キャスティングのオン・オフのオプションがあればよいのですが、それは、どうもありません。
ということで、一部、私信のようですが、失礼しました。
PS. 貼り付ける場合なら、クリップボードの中身のテキストを調べて、貼り付ける前に、文字列に「'」を付けたりすることは可能です。
>書式表示の変換の自動キャスティングのオン・オフのオプションがあればよいのですが
この機能があると便利だな~と思ったのは確かですね(笑
ないようなので、地道にいきます(笑
変換したいときはアクセサリーの電卓とか使います。
>私のマクロは失敗でした。(^^;
いえ、どうもありがとうございました。
今回の例外のようなコードはなかったので、大丈夫でした。
>何事にも不可能ではないって思えてくるのです
手段の難易度はさておき、多分出来ないことはないのでしょうね。
実用度は度外視して。
目的の処理に対して、どの言語を使うかを選択するのに少し似ていますね。
No.8
- 回答日時:
こんなに回答が積み重なり、もう回答ではないですが
(1)内容が16進数
(2)セルへ直接手入力でなくファイルからコピーしている
これは質問の最初に書いておくべき重要事項だったと思います。
ーー
セルの書式設定を文字列にあらかじめしておいても、コピー張り付けすると、コピーは、元のセルなどの書式も引き継ぐので、Eは指数表示のEに解釈されるようです。別CSVファイルなどからコピーしてくるとどうなるか、わかりませんが、元のファイルに書式という考えが無いが、いわば標準の書式を背負って、値とともにコピーされるのかも。
ーー
16進表記の文字列(例 62E9がA!にある)は、関数=HEX2DEC(A1)で10進数になります。(ここが言いたかっただけ)
エクセルでは書式で16進数(変換)表示は無いし、逆もない。
ーー
マクロについて、「確か、操作を記録しておくものでしたっけ」のレベルであれば、早い回答の段階で、マクロ・VBAはわからない旨をお礼や補足で、回答者に伝えたほうが良かったのではないですか。回答者の随一のエキスパートが詳しい解説を出して下さっても無駄になりますよね。
書き方が気にくわなかったようですいません。
>(1)内容が16進数
回答者の方が、こちらが何も書かなくても分かって下さっていたようなので
あまり気にしていませんでした。
>(2)セルへ直接手入力でなくファイルからコピーしている
ファイルといってもエクセルではなくて、CSVです。
ですので元々の書式というものがそもそも存在しないため、
コピーしてきても、貼り付けられる側であるエクセルの書式が適応されます。
(CSVをエクセルで開くと、開いた時点で指数表示になってしまいますから出来ません)
これは質問の最初に書いておくべき重要事項だったと思います。
すみませんでした
>16進表記の文字列(例 62E9がA!にある)は、関数=HEX2DEC(A1)で10進数になります
今回は進数変換はしませんが、覚えておきます
ありがとうございました
>マクロ・VBAはわからない旨をお礼や補足で、
>回答者に伝えたほうが良かったのではないですか。
>回答者の随一のエキスパートが詳しい解説を出して下さっても無駄になりますよね。
確かに分かりません。
VBA(ただしAccess)なら分かりますが…。
随一のエキスパートの方のソースはコンパイルエラーもなく使えましたので
無駄になったとは思いませんが…・。
「こういうこともできるよ」と下さったものです
プログラムを提示されたら全て理解しないといけないわけでもないでしょう。
たくさん回答も頂けたので
しばらく放って何もなければ閉じたいとおもいます
ありがとうございました
No.7
- 回答日時:
#02です。
少し補足で書かせていただきます最初の回答時は質問の値が16進コードとは、理解していなかったのですが、仮に2バイトの16進コードだとして
01E3
10E2
のどちらも入力した時点でエクセルは 1E+3(1×10^3) と認識します。これをどちらに復号すればよいか分からないので、「マクロでは難しい」と書いたのです。
WorkSheet_ChangeイベントでVBAに渡される引数は「レンジ(セル)」ですからVBAはそのセルの値を取得しますが、エクセルが「解釈」した後の数字である「1E+3」しか取得できないので、やはりマクロでは困難と考えます
No.6
- 回答日時:
こんばんは。
単に、テキスト表記の問題なのですし、Excelの自動キャスティングの問題だから、そのセルに、確実に決まった「書式」を入力するなら、その書式に合ったものを設定しておくのは当然だと思います。別に、書式を文字列にすればよいだけの話ですが、
>>力業でマクロを使って
>実は自分も最初そう思いました
>でも裏でそうしたところで、いざ実行すれば、
>実行した数字がエクセルの上でまたどうせ62000000000に戻るんだろうとも思いましたが・・・
そんなことはありえないです。マクロでは無理という話ですから、ちょっと、あえて作らさせていただきました。(Excel2003 のみでテスト)
'シートモジュール
Private Sub Worksheet_Change(ByVal Target As Range)
Dim buf As String
Dim i As Integer
Dim j As Integer
Dim chkVal
Dim k As Integer
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If VarType(Target.Value) = vbString Then
Target.Value = StrConv(Target.Value, vbNarrow + vbUpperCase)
Exit Sub
End If
If VarType(Target.Value) <> vbDouble Then Exit Sub
Application.EnableEvents = False
i = InStr(1, Target.Text, "E", 1)
If i = 1 Then
buf = Replace(Target.Text, "+", "")
ElseIf i > 2 And Len(Target.Text) <> i Then
For j = Len(Target.Value) To 1 Step -1
If Mid(Target.Value, j, 1) > 0 Then
buf = Left(Target.Value, j) & "E" & CStr(Len(Target.Value) - j)
Exit For
End If
Next j
Else
buf = Target.Text
End If
Target.ClearFormats
Target.Value = "'" & buf
Application.EnableEvents = True
End Sub
マクロでは無理なんですね
(使ったことないので知りませんけど・・
確か、操作を記録しておくものでしたっけ。
プログラムを組めば出来るということでしょうか
(マクロとプログラムの違いが分かってなくてすいません…
文字列からEがあるか判定して+を消して
先頭に'を足しているのかと思いましたが、
本当に出来ました。ありがとうございます。
ついでにアルファベットの小文字が大文字になりました。
ElseIf後のloopと最後のClearFormatsの動きの辺りが、
理解しきれませんでしたけど…
初めて見る関数ばかりで面白かったです。
ついでに、全角スペースを貼り付けると
自動で半角に変換されるのも知りませんでした。
(これは便利ですね
時間を割いて頂いてありがとうございました。
No.3
- 回答日時:
>これで諦めがつきます…
別に諦めなくても。可能なのに。
>こっちは「16進で打ち込んでいる」つもりなので、
回答者の何人かが「打ち込み前に、打ち込むセルの書式設定を『文字列』にしておけばOK」って書いてるの、理解してますか?
「事前にセルの書式設定を『文字列』にしておけば、16進で打ち込んでいる文字は、全部そのまま16進で打ち込まれる」んだけど?
何か「セルの書式設定は、標準から変えちゃいけない」とでも決まりがあるんでしょうか?
判ってないようなので、もう3回書きます。
「事前にセルの書式設定を『文字列』にしておけば、16進で打ち込んでいる文字は、全部そのまま16進で打ち込まれる」んだけど?
「事前にセルの書式設定を『文字列』にしておけば、16進で打ち込んでいる文字は、全部そのまま16進で打ち込まれる」んだけど?
「事前にセルの書式設定を『文字列』にしておけば、16進で打ち込んでいる文字は、全部そのまま16進で打ち込まれる」んだけど?
分かりやすく書き直して頂いてありがとうございます
>何か「セルの書式設定は、標準から変えちゃいけない」とでも決まりがあるんでしょうか?
特にはないです。
一応エクセルも出しますが、
出したって見られるわけでもないし…。
見られるのはエクセルを印刷したPDFだけなので、
セルの書式設定とかこまかい部分まで見るのは不可能です
No.1
- 回答日時:
>62E9と打ったはずが、6.20E+10と表示されます。
「指数表現で打ち込んでいる」ので、そうなるのが「当たり前」です。
「指数表現」とは「1.2345E12」や「3.21E-5」など「<仮数部>E<指数部>」で表現します。意味は「<仮数部>×10の<指数部>乗」です。
つまり「数字」+「E」+「数字」になっていれば「それは指数表現である」と解釈される訳です。
「62E9」は「62×10の9乗」ですから「6.2×10の10乗」と同じです。エクセルでは、Eの手前の指数部は「9.99」のように「1桁+小数点+残りの桁」に桁合わせしますから、「62×10の9乗」は「6.20E+10」と表示されます。
>何か回避する方法あはあるんでしょうか。
>セルの書式設定は「標準」にしていますが、
「書式設定が標準」なら頭に「'」を足す以外、回避出来ません。
「書式設定を文字列」にしておけば、何を打ち込んでも「文字列」になるので、16進数4桁を打ち込むセルは、最初から「書式設定を文字列」にしておきましょう。
そうすれば「62E9」以外にも「0012」は「12にならずに0012のまま」入力されます。
浮動小数点とかは根本的には理解してませんけど
何となく言葉は知ってる程度です
>「指数表現で打ち込んでいる」ので、そうなるのが「当たり前」です。
こっちは「16進で打ち込んでいる」つもりなので、
そのまま表示させたかったんですが無理そうですね
CSVから大量にコピーしきて
コピーしたエクセルのセルをダブルクリックしてなんたらかんたら…
とやっているので、冒頭に'が1文字ついているだけでそこだけカーソル避けるのが面倒臭さ倍増だったので。
そのへんの設定も何かあるんじゃないかと思って探してたんですが
無理そうなことが分かって良かったです
どうもありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックス内の文字のふ...
-
Excelで数値→文字列変換で指数...
-
Excelの関数について、特定の文...
-
【Excel】貼り付けた画像がいつ...
-
数字がセルの左側に寄っていて...
-
Excel 記入欄に網掛けして、文...
-
エクセル カタカナの文字を検...
-
EXCELでCTRL+1が使えません。
-
excel 表計算 加算するセルが空...
-
Excelの単一セルから結合セルへ...
-
エクセル 入力中に表示されな...
-
エクセルで書式設定だけを固定...
-
セルに値を入力したら、セルに...
-
エクセルの条件付き書式設定を...
-
常に参照もとのセルの書式に従...
-
エクセルVBAユーザーフォームの...
-
Excel。日付の斜線で位置合わせ...
-
OpenOfficeの表組みで一部を太...
-
Excel2013でセルの書式が勝手に...
-
EXCEL □(四角)の中に45を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelの関数について、特定の文...
-
【Excel】貼り付けた画像がいつ...
-
エクセル 入力中に表示されな...
-
数字がセルの左側に寄っていて...
-
日付が1年以内になると他のセル...
-
条件付き書式で範囲外だったら...
-
エクセルで同じ値が連続してい...
-
エクセル カタカナの文字を検...
-
エクセルで条件付き書式を使わ...
-
excelの16進数表示方法
-
エクセル:セルのバックの色だ...
-
Excelについて▶あるセルに文字...
-
エクセルで平均時間の表示の仕方
-
エクセル「一度設定した列幅を...
-
エクセル 入力規則 貼付して...
-
エクセルで入力数字に自動的に,...
-
excel 表計算 加算するセルが空...
-
エクセルで書式設定だけを固定...
おすすめ情報