[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『切捨て』(ryu)
今回もよろしくお願いします。
A B
1 1111 1.2
2 2222
3 3333
4 4444
のような表があり B1をコピーA1:A5を選択し編集から「形式を選択して貼り付け」 乗算を選択で値は各小数点が付きますが小数点以下を切り捨てた値を求めたいのですが
ほぼ裏技見たいのものですが、、、 1)A1:A4 までを範囲指定 2)書式 → セル → 表示形式 ユーザー定義 : 0[Ctrl + J].000000000000000000000 ※[Ctrl + J]とは、改行のことです。 Ctrl を押しながら、J を押してください。 3)そのまま【配置】のタブで □縮小して全体を表示する にチェックを入れてから □折り返して全体を表示する にチェックを入れてる OK。 4)B1 をコピー 5)A1:A4 を範囲指定 6)編集 → 形式を選択して貼り付け ○値 にチェックを入れて ○乗算 にチェックを入れる OK。 ※表示だけがそのように見えるだけです。 実際の数字は、数式バーに表示されているものです。 ※無理やり表示だけを見せていますが、実際に切り捨てになっているかは???です。 参考過去ログ [[20041002115718]] 『全ての小数点の切捨て』(小林) (キリキ)(〃⌒o⌒)b
(キリキ)(〃⌒o⌒)bさん いつもありがとうございます。この値を又演算しますので この方法ではダメかと思います。 (ryu)
であれば、INT関数などの計算式を使用する方法以外ないのかもしれませんね・・・ (キリキ)(〃⌒o⌒)b
そうですか・・・たとえばC列にINT関数で値を出しその値をA列に入れ換えることって 出来るでしょうか (ryu)
C列の範囲をコピーし、A列で値を選択してコピーのことでしょうか? (脱・初心者!)
>C列の範囲をコピーし、A列で値を選択してコピーのことでしょうか? この方法ではA列に貼り付けできないと思いますが? (ryu)
>この方法ではA列に貼り付けできないと思いますが?
そうですか?
A列の数値を元に、B列の数値をINT関数で計算し、そのC列をコピー → A列に値のみ貼り付け。
以上の操作で出来そうですよ?
別案でb
シートモジュールへコピペ
'---------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x(1 To 2) As Variant
Dim Rng As Range
Dim MyStr As String
On Error GoTo EXIT_SUB
If Target.Count > 1 Then Exit Sub
MyStr = Target
With CreateObject("VBScript.RegEXP")
.Pattern = "^(ryu\()([a-z]+\d+|[a-z]+\d+:[a-z]+\d+),(.*)\)$"
x(1) = .Replace(MyStr, "$2")
x(2) = .Replace(MyStr, "$3")
End With
Application.EnableEvents = False
For Each Rng In Range(x(1))
Range(Rng.Address) = Int(Rng * Range(x(2)))
Next Rng
Target = ""
Application.EnableEvents = True
Exit Sub
EXIT_SUB:
Application.EnableEvents = True
End Sub
無理やり、正規表現ですがw
使用方法
何処でもいいから、開いているセルに
ryu(a1:a4,b1)
のように入力。
※=(イコール)は入れないでください。
(キリキ)(〃⌒o⌒)b
(キリキ)(〃⌒o⌒)bさん お礼が遅くなってごめんなさい。両案共できました。
ありがとうございます。申し訳ないのですが下記のコードを説明して頂けませんか
With CreateObject("VBScript.RegEXP")
.Pattern = "^(ryu\()([a-z]+\d+|[a-z]+\d+:[a-z]+\d+),(.*)\)$"
x(1) = .Replace(MyStr, "$2")
x(2) = .Replace(MyStr, "$3")
(ryu)
説明ですか・・・
σ(^o^;)も、勉強の身ですので違ってたらごめんなさい。
'VBScript.RegEXP(正規表現)での処理開始
With CreateObject("VBScript.RegEXP")
'パターンを登録『始まりが「ryu(」続いて「英語が1つ以上で始まり、数字が1つ以上のもの、
' 又は、上記プラス間に : が入る」続いて , があり「改行以外の文字が0以上続き」) で終わるもの。
.Pattern = "^(ryu\()([a-z]+\d+|[a-z]+\d+:[a-z]+\d+),(.*)\)$"
'x(1) に、上記の()で抽出される2番目のものを格納
x(1) = .Replace(MyStr, "$2")
'x(2) に、上記の()で抽出される3番目のものを格納
x(2) = .Replace(MyStr, "$3")
'一連の作業終了
End With
何ですけど、見返してみると、、、
With CreateObject("VBScript.RegEXP")
.Pattern = "^ryu\(([a-z]+\d+|[a-z]+\d+:[a-z]+\d+),([a-z]+\d+)\)$"
x(1) = .Replace(MyStr, "$1")
x(2) = .Replace(MyStr, "$2")
End With
の方がいいですね^^;
パターンは、こちらを参考にしてみてください。
http://www.skai.co.jp/arufonsu/vb/VB-004-08.htm
(キリキ)(〃⌒o⌒)b
ご無理なお願いありがとうございます。こんな難しいコードを作るなんてまだまだです がこれからも頑張ります。 (ryu)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.