人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAについてお尋ねします。
1行目と2行目に任意の数字が入っていたとして、
3行目、4行目に下記のような計算をするマクロを作って下さい。

3行目=1行目の数字×2行目の数字×0.01
4行目=1行目ー3行目

ただし、下記の点をご留意下さい。
?1行目に数字がある場合、その全てにおいて作業が行われること。
?2行目に数値が無い場合、「100」が入っているものとして作業が行われること。
?3行目に小数点以下が出る場合、四捨五入してから、4行目を算出すること。

例えば1行目に500が入っていて、2行目に40が入っている場合、
3行目に200、4行目に300が入るようにしてください。
2行目の40というのはつまり40%ということです。

以上、よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:VBA エクセル マクロ 四捨五入 小数点
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● taske
●50ポイント

無駄な部分もありますが、こんな感じでしょうか?

1行目が空白をはさむと処理が止まります。

---

Dim x As Integer

Dim tmp As Double

Dim tmp2 As Double

x = 1

While Cells(1, x).Value <> ""

tmp = Cells(2, x).Value

If Cells(2, x).Value = "" Then

tmp = 100

End If

Cells(3, x) = Cells(1, x).Value * tmp * 0.01

tmp2 = Cells(3, x).Value

If tmp2 > 0 Then

tmp2 = Int(tmp2 + 0.5)

Else

tmp2 = Int(tmp2 - 0.5)

End If

Cells(4, x) = Cells(1, x).Value - tmp2

x = x + 1

Wend

---

http://www.yahoo.co.jp/

◎質問者からの返答

ご回答ありがとうございます。

だいたいこれで良いと思うのですが、

?の「小数点以下・・・」を満たしておりません。

ご回答いただいた物を改良していただければ幸いです。

よろしくお願いします。


2 ● taske
●50ポイント

すみません、要件を読み間違えました。

---

Dim x As Integer

Dim tmp As Double

x = 1

While Cells(1, x).Value <> ""

tmp = Cells(2, x).Value

If Cells(2, x).Value = "" Then

tmp = 100

End If

tmp = Cells(1, x).Value * tmp * 0.01

If tmp > 0 Then

tmp = Int(tmp + 0.5)

Else

tmp = Int(tmp - 0.5)

End If

Cells(3, x).Value = tmp

Cells(4, x).Value = Cells(1, x).Value - tmp

x = x + 1

Wend

---

http://www.amazon.co.jp/

◎質問者からの返答

再度のご回答ありがとうございました。

これで完璧です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ