重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

A列で条件を判断し結果をD列に記入するにはどうすれば良いのですか。

A列が3000以上の場合D列にA
A列が2000から3000の場合D列にB
A列が1000から2000の場合D列にC

でA列が増えていきます。

   A列      D列
1  3500      A
2  2500      B
3  1000      C



150 3400      A

よろしくお願いします。

A 回答 (2件)

Public Sub hoge()


Dim i As Integer
For i = 1 To 150
Dim value As Currency
value = Cells(i, 1).value

Dim r As Range
Set r = Cells(i, 4)
If value >= 1000 Then
r.value = "C"
End If
If value >= 2000 Then
r.value = "B"
End If
If value >= 3000 Then
r.value = "A"
End If
Next

End Sub

ループする回数は、入力されている最終行を予め求めればいいと思います。

また、VBAなんてしなくても、D列に数式を入れれば済むと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
同じような処理をするのが何種類もあるのでエクセル関数じゃなくVBAでって思い、色々始めたばかりで分からないことだらけです。

教えていただいたのを自分で理解しながら作ってみようと思います。

お礼日時:2016/06/24 13:06

Dim 行 As Long


Dim END行 As Long

Set Sh = ActiveSheet
END行 = Sh.Range("A65536").End(xlUp).Row ’最終行

For 行 = 2 To END行
If IsNumeric(Sh.Range("A" & 行).Value) Then ’数値の場合のみ

If Sh.Range("A" & 行).Value >= 3000 Then
Sh.Range("B" & 行).Value = "A"

ElseIf Sh.Range("A" & 行).Value >= 2000 Then
Sh.Range("B" & 行).Value = "B"

ElseIf Sh.Range("A" & 行).Value >= 1000 Then
Sh.Range("B" & 行).Value = "C"

Else '1000未満なら無処理
End If

End If

Next 行
    • good
    • 0
この回答へのお礼

ありがとうございます。

同じ処理をするのにも色々な方法があるんですね。
始めの方の回答とともに、勉強して覚えていきたいと思います。

お礼日時:2016/06/24 13:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す