エクセル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%ということです。

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/03/03 18:59:21
  • 終了:2007/03/03 20:22:28

回答(2件)

id:taske No.1

taske回答回数64ベストアンサー獲得回数22007/03/03 19:50:45

ポイント50pt

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

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/

id:taroemon

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

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

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

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

よろしくお願いします。

2007/03/03 20:00:20
id:taske No.2

taske回答回数64ベストアンサー獲得回数22007/03/03 20:08:14

ポイント50pt

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

---

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/

id:taroemon

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

これで完璧です。

2007/03/03 20:21:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません