[[20180712131326]] 『少数桁を入力後に自動で整数値が出るようにしたい』(なお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『少数桁を入力後に自動で整数値が出るようにしたい』(なお)

エクセルで測定値をエクセルの一覧表にインプットしています
インプットの数値が毎回整数値は同じ桁で、少数値のみが違うので
少数を入力すれば自動的に登録された整数値が出るようにしたいです

例)1.789の数値ならば:789と入力⇒自動的に1.789とセルには出したい
  1.589の数値ならば:789と入力⇒自動的に1.589とセルには出したい 

※セルの数値を計算必要のため、セルの書式設定のユーザー定義で表示を変える手段は使えないです

アイデア・技あれば教えてください

< 使用 Excel:unknown、使用 OS:unknown >


 数値の入力欄と計算に使うセルを別にしてはどうか?
 例えばA列に入力していってB列に
 =1+A/1000
 と入力し、計算にはB列を使う。
(ねむねむ) 2018/07/12(木) 13:27

 おっと
 =1+A1/1000
 で。
(ねむねむ) 2018/07/12(木) 13:31

アドバイスありがとうございます
ただ、入力したセル値がOKなら黒文字表記・駄目なら赤文字表記になるなど
入力規則も絡んでくるので、出来れば入力したセル値のみで運用したいんですが・・・

難しいですよね・・・
(なお) 2018/07/12(木) 13:36


 1列に入れていくとか、後でまとめてコピペができるならまずは表示形式で
 「"1."0」などにしてデータを入れてしまう。(もちろんデータは小数ではない)
 →範囲をコピーしクリップボードを起動してそのままのセルに「すべて貼り付け」で
 貼り付ける。

 というのは如何でしょうか?

(コナミ) 2018/07/12(木) 13:38


 とりあえず他にも条件があるのであれば後出しにせずに出してくれないか?
(ねむねむ) 2018/07/12(木) 13:40

かいてたら、被りましたがせっかくなので投稿します。

B1が入力欄、A1が出力欄だとして
A1に「=1+(B1/10^LEN(B1))」という数式を入力後にB1に数値を入力してみて下さい。

B1に入力するまではブランクにしておきたいなら
A1に「=IF(B1,1+(B1/10^LEN(B1)),"")」とかでしょうか
(もこな2) 2018/07/12(木) 13:42


アドバイスありがとうございます
頂いた回答でアレンジしてみます
やはり単純にセルに少数をいれたら、そのセルが自動変換されることは
難しいですよね・・・
(なお) 2018/07/12(木) 13:46

 もこな2さんの式の場合、例えば1.025としたい場合はどのように入力するのだろうか?
(ねむねむ) 2018/07/12(木) 13:48

 ワークシートプロシージャに
 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim WK_RANGE    As Range
    If Intersect(Range("A:A"), Target) Is Nothing Then Exit Sub
    Application.EnableEvents = False

    For Each WK_RANGE In Intersect(Range("A:A"), Target)
        If IsNumeric(WK_RANGE.Value) Then
            WK_RANGE.Value = 1 + WK_RANGE / 1000
        End If
    Next
    Application.EnableEvents = True

 End Sub
 ではどうか?
 A列に数値を入力した場合に変換する。

(ねむねむ) 2018/07/12(木) 14:05


ねむねむさん
VBAアドバイスありがとうございます

(なお) 2018/07/12(木) 14:08


同じというか、よりすばらしいコードをねむねむさんが投稿されてますが、他の部分も含めて投稿。

>例えば1.025としたい場合はどのように入力するのだろうか?
 あぁそうか。。。それはダメですね。

>単純にセルに少数をいれたら
細かい話ですが入れてるのは整数ですよね(「.1234」って入力してるならExcel君が0.1234って解釈してくれますから、それに整数部分を足す(加算する)だけでよいはず。

踏まえて「.1234」みたいに小数点から入力するのがアリで、入力したセルそのものを変えたいならこんな感じで行けそうな気がします。
Private Sub Worksheet_Change(ByVal Target As Range)

     If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
     If Target.Cells.Count <> 1 Then Exit Sub

     If Target.Value < 1 Then
         Application.EnableEvents = False
         Target.Value = Target.Value + 1
         Application.EnableEvents = True
     End If
 End Sub

※↑はシートモジュールに貼り付けてください。

ただ、なんで数式じゃだめなのかよくわからず。
>入力したセル値がOKなら黒文字表記・駄目なら赤文字表記になるなど入力規則も絡んでくる
よくわからないですが、条件付き書式の間違い?

(入力規則でチェックかけたいなら、整数部分を引いた数で入力欄を確認すれば事足りるのでは?)

(もこな2) 2018/07/12(木) 14:28


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.