Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4726 / 13644 ツリー ←次へ | 前へ→

【54886】常に正しく数値表示するには にしもり 08/4/3(木) 11:18 質問[未読]
【54887】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 11:56 回答[未読]
【54888】Re:常に正しく数値表示するには にしもり 08/4/3(木) 12:28 質問[未読]
【54889】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 12:38 回答[未読]
【54890】Re:常に正しく数値表示するには ponpon 08/4/3(木) 13:26 発言[未読]
【54891】Re:常に正しく数値表示するには にしもり 08/4/3(木) 14:23 質問[未読]
【54895】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 15:06 回答[未読]
【54896】Re:常に正しく数値表示するには にしもり 08/4/3(木) 15:36 質問[未読]
【54897】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 15:45 回答[未読]
【54898】Re:常に正しく数値表示するには にしもり 08/4/3(木) 15:55 質問[未読]
【54900】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 16:05 回答[未読]
【54902】Re:常に正しく数値表示するには にしもり 08/4/3(木) 16:18 質問[未読]
【54903】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 16:28 回答[未読]
【54904】Re:常に正しく数値表示するには にしもり 08/4/3(木) 16:35 質問[未読]
【54905】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 16:45 回答[未読]
【54906】Re:常に正しく数値表示するには にしもり 08/4/3(木) 16:54 質問[未読]
【54907】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 17:02 回答[未読]
【54908】Re:常に正しく数値表示するには にしもり 08/4/3(木) 17:16 質問[未読]
【54909】Re:常に正しく数値表示するには にしもり 08/4/3(木) 17:26 質問[未読]
【54910】Re:常に正しく数値表示するには ぴぐ 08/4/3(木) 17:31 発言[未読]
【54911】Re:常に正しく数値表示するには にしもり 08/4/3(木) 17:33 お礼[未読]

【54886】常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 11:18 -

引用なし
パスワード
   こんにちは。

あるcsvファイルをExcelで開いたとします。
A列のセルに12桁の数字がはいっています。
たとえば、実際は100060847901なのに1E+11と表示されています。それにたいして

Columns("A:A").Select
  Selection.NumberFormatLocal = "0_ "

というマクロをかけ、100060847901と実際通りに表示させております。

いま、困ったことが起きています。
マクロをかける前の1E+11と表示された行をある作業の都合上で他行にコピペし、その後マクロをかけると
100061000000と、実際とはことなる値が表示されてしまいます。

コピペをしても100060847901と実際通りに表示させるようにはどうすればよいでしょうか。
どなたか御教示ください。

【54887】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 11:56 -

引用なし
パスワード
   マクロではなく、ユーザー定義で"0"とだけしておいたらどう?

【54888】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 12:28 -

引用なし
パスワード
   ▼ぴぐ さん:
ありがとうございます。
おしゃっているのは、マクロを使わずに手でできるじゃないか、ということですか?
説明ふそくすみませんでしたが、同一マクロ中で他のこと(セルの拡幅とか)もやっているので
この数値表示についてもどうしてもマクロを使いたいです。

そもそも、1E+11とかになってるものをコピペすると値そのものが変化してしまうのしょうか。
そんなことがあるのでしょうか。
だとしたら、いままでのいままでのパソコン人生(?)の中でわたしは誤った数値を仕事でつかったり他人にみせたりしてたことになりますs(汗;)

【54889】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 12:38 -

引用なし
パスワード
   >そもそも、1E+11とかになってるものをコピペすると値そのものが
>変化してしまうのしょうか。
実際にそうなったことがないので、何とも言えませんが…^^;

現状のコードがどうなっているか判りませんが、
文章から察するに、
 コピペ → 表示変換
してますよね?
それを
 表示変換 → コピペ
にしてもダメですか?

そもそも、コピペというのが Copy関数を使っているのか
値のみを移しているのか気になりますが。

【54890】Re:常に正しく数値表示するには
発言  ponpon  - 08/4/3(木) 13:26 -

引用なし
パスワード
   ▼にしもり さん:
Sub Macro1()
'
  With Range("A1")
    .Value = "100060847901"
    .NumberFormatLocal = "0_ "
    .Copy Range("C1")
  End With
End Sub
↑こんなんでやってみましたが、再現しません。
もう少し詳しく説明されたらいかがでしょうか?

【54891】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 14:23 -

引用なし
パスワード
   ▼ponpon さん:
ありがとうございます。
詳しく言いますと、
post.scvというのがあります。

(画面イメージ)
+-----+-----+
|    |A列  |
+-----+-----+
|1行  |1E+11|(実際の値は100060847901)
+-----+-----+
|2行  | n.a |
+-----+-----+
|3行  |1E+11|(実際の値は100060893501)
+-----+-----+

この3行目をカット&ペーストし(正確にはコピペではありませんでした)、

(画面イメージ)
+-----+-----+
|    |A列  |
+-----+-----+
|1行  |1E+11|(実際の値は100060847901)
+-----+-----+
|2行  |1E+11|(実際の値は100060893501)
+-----+-----+
|3行  | n.a |
+-----+-----+

とします(この際2行目をdeleteするのでもよい)。

post.scvを上書き保存します。
すると「post.csvにはcsvと互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか」がでるので「はい」を押します。
その後右上の×を押してとじします。
するとまた「post.csvにはcsvと互換性のない機能が含まれている可能性があります。この形式でブックを保存しますか」がでるので「はい」を押します。


と、ここまでやったら次のことがわかりました☆
A列が1.00E+1 になっています!(実際の値までもが100060000000になっています!)
こんなことあるんですね。
マクロの問題ではないようです。
よって、質問を変えます。
csvを上書き保存するとき元の値が変わらないように保存するにはどうすればいいですか、と。
よろしくお願いします。

【54895】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 15:06 -

引用なし
パスワード
   csv形式で保存する前に
 "1E+11" → "100060893501"
と表示されるよう
 .NumberFormatLocal = "0"
としておいたり、もしくは、数値ではなく文字列として
 "'100060893501"
としておくだけの事だと思うけど…。

【54896】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 15:36 -

引用なし
パスワード
   ▼ぴぐ さん:
いつも説明がへたで本当にすみません。

(1)Post.csvを加工し保存する。
(2)保存されたpost.csvにマクロをかけています。
ある理由で(1)と(2)は独立した作業となっています。
いまやりたいことは(1)のみであります。
どうすればよろしいでしょうか

【54897】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 15:45 -

引用なし
パスワード
   csvファイルを開く際に、メニューの
 データ > 外部データの取り込み > データの取り込み
で、その問題の数値を文字列として取り込めばどうかな?

【54898】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 15:55 -

引用なし
パスワード
   ▼ぴぐ さん:
やってみましたが
1E+11 そのものが文字になってしまうみたいです

【54900】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 16:05 -

引用なし
パスワード
   >1E+11 そのものが文字になってしまうみたいです
元のcsvファイルには数値として書き込まれているんだよね?

後、列のデータ形式のダイアログのところで、問題の数値列を選択後、
データ形式を文字列に選択してる?

こっちだと指数表示にはならないけど…。

【54902】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 16:18 -

引用なし
パスワード
   ▼ぴぐ さん:
>元のcsvファイルには数値として書き込まれているんだよね?
はい。

確認ですが
ご指示は、
1.excelを立ち上げる
2、新規bookを開く
3.メニューの「データ」をクリック
4.外部データの取り込みをクリック
5.データの取り込み
6.Postcsvを開く
7.取り込み開始行は2
8.区切り文字はカンマ
9.列のデータ形式=文字列 
ですよね。
うーん、1E+11になってしまいます。

【54903】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 16:28 -

引用なし
パスワード
   >9.列のデータ形式=文字列 
データのプレビューは文字列になってる?

それで指数表示になるのは、ちょっと解らない…。

【54904】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 16:35 -

引用なし
パスワード
   ▼ぴぐ さん:

プレビューが指数表示になっています。


あと、すみません、前の説明がすこしちがっていました。


まちがい

+-----+-----+
|    |A列  |
+-----+-----+
|1行  |1E+11|(実際の値は100060847901)
+-----+-----+
|2行  | n.a |
+-----+-----+
|3行  |1E+11|(実際の値は100060893501)
+-----+-----+

ただしい

+-----+-----+
|    |A列  |
+-----+-----+
|1行  |タイトル|
+-----+-----+
|2行  |1E+11|(実際の値は100060847901)
+-----+-----+
|3行  | n.a |
+-----+-----+
|4行  |1E+11|(実際の値は100060893501)
+-----+-----+

でした。

【54905】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 16:45 -

引用なし
パスワード
   >プレビューが指数表示になっています。
それ、ファイルの中身が既に指数表示になってるんじゃ…。
もう一度、ファイルの中身を確認してみてよ。

【54906】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 16:54 -

引用なし
パスワード
   ▼ぴぐ さん:
いいえ、元データを開くと、画面のセルでは指数表示ですが、上の数式バーではきちんと12桁になっています。

おかしいですか

【54907】Re:常に正しく数値表示するには
回答  ぴぐ  - 08/4/3(木) 17:02 -

引用なし
パスワード
   テキストファイルで開いても?

【54908】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 17:16 -

引用なし
パスワード
   ▼ぴぐ さん:
メモ帳でひらいたら
1E+11になりました。

変ですか

【54909】Re:常に正しく数値表示するには
質問  にしもり  - 08/4/3(木) 17:26 -

引用なし
パスワード
   >メモ帳でひらいたら
>1E+11になりました。
>
タイトル行がないファイルですと1E+11になりましたが
タイトル行があるファイルですと12桁になりました。

【54910】Re:常に正しく数値表示するには
発言  ぴぐ  - 08/4/3(木) 17:31 -

引用なし
パスワード
   >メモ帳でひらいたら
>1E+11になりました。
>
>変ですか

そうですか…。
マクロを使いたくなく、csvファイルを開いて加工したいのであれば、
先に言った外部データの取り込みで、取り込み先のセルに対して
事前にユーザー定義を"0"にしておくとか設定しておかないと、指数表示
になってしまうかと思いますよ。

そもそも、csvファイル内の数値が指数表示になっていることが
良いのかどうか疑問だけど。

加工するだけなら、テキストファイルで加工したら?
データ量は知らないけど…。

【54911】Re:常に正しく数値表示するには
お礼  にしもり  - 08/4/3(木) 17:33 -

引用なし
パスワード
   ▼ぴぐ さん:
VBAの質問から逸脱してるのでこれ以上お手間をかけるわけにいきません。
他の方法を考えてみます。
ここまで本当にありがとうございました。

4726 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free