- ベストアンサー
エクセルですべてxx,000の場合
こんにちは。 こんなことができないかなと思うのですが、できないのでしょうか? たとえば、表題に書いたように、その列に入力する数字はすべてがxxxx000というように、必ず最後に0が3つつくというような場合、たとえば、25000を入力したかったら、25と入力するだけで、そのセルの値が自動で25000になるというような設定はできないでしょうか? もちろん、四則演算なので、たとえば、A1に25と打ってとなりのB1に=A1*1000と入力しておけば、そしてそれをずっとコピーしておけば、A列に数字を入力すれば、B列にその数字に000をつけたものが表示されるというのはわかるし、まぁ、それでもかまわないじゃないか、なにが文句があるんだと言われると、返す言葉もないのですが。。 でも、もし方法があるのなら、知りたいのです。 教えてくださいませ。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
[ツール]-[オプション]-[編集]の [小数点位置を固定する]にチェックを入れて、 入力単位を[-3]にするとその状態になります。 この状態で25と入力したい場合には、25.0と 入力する必要があるようです。 セル単位ではなく、エクセル全体での設定になります。 そればかりかそれ以降、すべてのブックに影響します。 以前、間違ってここを修正したために、入力した値と 表示される値が異なって悩んだことがありました。 ご注意ください。
その他の回答 (5)
- ja7awu
- ベストアンサー率62% (292/464)
> A列の3行目から43行目とかを指定する方法を教えていただけると、 > うれしいです。 説明にも書いている通り、コードの2行目を次のように変更します。 Const Hani = "A:A" ' <----- 適用範囲を指定 ↓ Const Hani = "A3:A43" ’<---- 範囲をA3:A43に設定 一般的な範囲の指定方法と同じです。 ただ、文字列で指定しますから " " で括ります。
お礼
何度もありがとうございます。できました。できました。なるほどぉ。これで、ばっちりです。 ありがとうございました。m(__)mm(__)m
- sakenomo
- ベストアンサー率52% (35/67)
再びNo.2です。 僕のコードはだめです。数字以外の文字列を入力した場合の対応を忘れていました。 ja7awuさん、Intersect、EnableEventsなど、勉強になりました。 ハ~、恥ずかし~。
- sakenomo
- ベストアンサー率52% (35/67)
No.2です。 前記のコードでは、1000以上の数を記入した場合に不具合があったので、訂正します。 Public i As Integer Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Count <> 1 Then Exit Sub If i = 1 Then Exit Sub If .Column = 1 And .Row <= 20 Then i = 1 .Value = .Value * 1000 End If End With End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) i = 0 End Sub
お礼
何度も回答をありがとうございました。m(__)m すごいですねぇ。VBAですか!! VBAを自由に操れるようになるのは、わたしの夢です。。でも、もう半分以上あきらめてますけどね。。f^^) 文字列は入れるつもりはないので、この回答で、わたしは十分なんです。多分、プログラムをなさる方としては、あとで、不具合を見つけて、ご不満なんでしょうが。。 でも、わたしとしては、とってもありがたいです。 ありがとうございました。m(__)m
- ja7awu
- ベストアンサー率62% (292/464)
> 25と入力するだけで、そのセルの値が自動で25000になるというような設定はできないでしょうか? > その列に入力する数字はすべてが・・・ 特定の範囲だけ機能させるようですので[小数点位置を固定する]では、 出来ないと思います。 範囲を指定しても出来ますが、VBAを使うことになると思います。 その列(範囲)は、1000未満の数値は、入らないということでいいですね。 それで良かったら、次のように操作してみてください。 1. 使用しているシートのシート名タブを右クリックし、「コードの表示」 を指定します。 2. モジュールウィンドウに下記コードをコピーして貼り付けます。 3. コードの2行目で千単位入力する範囲を実情に合わせ変更します。 4. Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 5. 動作を確認します。(書式は、任意に設定します。) Private Sub Worksheet_Change(ByVal Target As Range) Const Hani = "A:A" ' <----- 適用範囲を指定 Set Target = Application.Intersect(Range(Hani), Target) If Target Is Nothing Then Exit Sub If (Target.Count > 1) Or (Not IsNumeric(Target.Value)) Or _ (IsEmpty(Target.Value)) Then Exit Sub Application.EnableEvents = False Target.Value = Target.Value * 1000 Application.EnableEvents = True End Sub
お礼
こんにちは。回答をありがとうございます。m(__)m VBAを使うと、いろんなことが可能になるんですね。すごいです。ほんとに助かります。 ただ、わたしの質問には書いてなかったのですが、列全部を指定してしまうと、最後にその合計をださせようとかすると、合計にさらに0が3つくっついちゃうのです。A列の3行目から43行目とかを指定する方法を教えていただけると、うれしいです。 よろしくお願いいたします。
- sakenomo
- ベストアンサー率52% (35/67)
VBAを使います。 ツール→マクロ→Visual Vaseic Edeitor でVisual Vaseic Edeitorを起動し、 表示→プロジェクト エクスプローラ で開いた小窓から、 使いたいワークシートを右クリック、メニューの中の "コードの表示"を選択します。 開いた窓に、以下のコードをコピー、貼り付け してください。 A列の1~20行の範囲で、ご希望のようになります。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Count <> 1 Then Exit Sub If .Column = 1 And .Row <= 20 Then If .Value < 1000 Then .Value = .Value * 1000 End If End With End Sub
お礼
早速の回答、ありがとうございます。 これ、いいですね。この設定をしたときは、どのセルに入力しても、たとえば、25と入力すれば、25000となるんですね!! で、その必要がなくなったら、その設定を元に戻せば、書いた文字はそのままで、またふつうに入力できますね。 おもしろぉい!! もちろん、設定を元に戻すのを忘れないようにしないとたいへんなことになりそうだけど、でも、だれでも使えますねっ!! ありがとう!! 使わせていただきます。(^^)