Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8353 / 13646 ツリー ←次へ | 前へ→

【33827】三つの条件 チチクイック 06/1/21(土) 18:15 質問[未読]
【33829】Re:三つの条件 [名前なし] 06/1/21(土) 18:56 発言[未読]
【33834】Re:三つの条件 チチクイック 06/1/21(土) 22:01 質問[未読]
【33837】Re:三つの条件 [名前なし] 06/1/22(日) 1:04 発言[未読]
【33843】Re:三つの条件 Hi 06/1/22(日) 13:48 発言[未読]

【33827】三つの条件
質問  チチクイック  - 06/1/21(土) 18:15 -

引用なし
パスワード
   IFステートメントでAセルかBセルかCセルかそれ以上の数のセルがあるとします、
そのセルの値以上に
なったら動作するようなマクロを作っていますが。
この判定のセルの数が毎回違うとき。
マクロはどうしたら能率がいい書き方になるのでしょう?
セルが1つのときやまたはない時や、4つや3つなの数が毎回順不同の
ときのIFステートメントはどうしたらいいのですか?

【33829】Re:三つの条件
発言  [名前なし]  - 06/1/21(土) 18:56 -

引用なし
パスワード
   ▼チチクイック さん:
>この判定のセルの数が毎回違うとき。
>マクロはどうしたら能率がいい書き方になるのでしょう?

「判定のセルの数」がどういう基準で決まるのかわかりません。
どの場合は3つでどの場合は4つという条件はどんなものですか?

それと、今はどのようなコードになっているのですか?

【33834】Re:三つの条件
質問  チチクイック  - 06/1/21(土) 22:01 -

引用なし
パスワード
   まず、ひとつのシートがあったとします。
そのシートをforなどで調査して
必要な条件に一致する数字を拾ってきます。
それをこちらの条件によって
1行目
2行目
3行目とわりふり、それをIFの条件にしたいのですが、
普通一個一個コードを書くと、
If お金 >= Range("A1") Then
End If

見たいな判定でいいと思うのですが、
僕やりたいのは、条件が
1行目 Aセル Bセル Cセル
2行目 Aセル
3行目 何もない
みたいな時に
If お金 >= Range("A1") And お金 >= Range("B1") And お金 >= Range("C1")Then
End If
If お金 >= Range("A2") Then
End If

みたいにコードを書かないといけなくなってしまいます。、
実際は数百行ある上に行に入っているセルの値がいつもばらばらなので、
これをわざわざ上記のように書くのが大変なので
短目にかく方法はないものか
と思っているのですが?

【33837】Re:三つの条件
発言  [名前なし]  - 06/1/22(日) 1:04 -

引用なし
パスワード
   ▼チチクイック さん:
>僕やりたいのは、条件が
>1行目 Aセル Bセル Cセル
>2行目 Aセル
>3行目 何もない
>みたいな時に
>If お金 >= Range("A1") And お金 >= Range("B1") And お金 >= Range("C1")Then
>End If
>If お金 >= Range("A2") Then
>End If
>みたいにコードを書かないといけなくなってしまいます。、

つまり、「対象の行に記入されている全ての数値が[お金]という変数に入っている
数値以下かどうかを1行ずつ比較したい」ということですね。

>If お金 >= Range("A1") And お金 >= Range("B1") And お金 >= Range("C1")Then
ということは、その行の全ての数値の最大値がお金以下であれば、その行のほかの
数値もお金以下であるはずですね。

ということで、以下のコードでどうでしょうか。

Sub Macro1()
Dim Cell As Range
Dim お金 As Long

お金 = 1000

For Each Cell In ActiveSheet.UsedRange.Rows 'シート内の使用している範囲を1行ずつCellに割り当て
  With WorksheetFunction
    If .Count(Cell) > 0 Then      '対象の行に数値が1つでもあれば
      
      If お金 >= .Max(Cell) Then   '対象の行の最大値がお金以下なら

        Debug.Print Cell.Row & "行目は" & .Count(Cell) & "個数字があって、" & _
        "その全てが" & お金 & "以下です。"
      
      End If
    End If
  End With
Next Cell

End Sub

【33843】Re:三つの条件
発言  Hi  - 06/1/22(日) 13:48 -

引用なし
パスワード
   ▼チチクイック さん:

今いち、されたい内容が理解できません。

具体的に表を作られどのようなものを求めているか?
明確にされては如何でしょう。

回答がありますが、それでもなさそうですし…

8353 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free