Excel VBA質問箱 IV

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

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


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

【40586】抽出の条件 質問(初心者A氏) 06/7/18(火) 15:46 質問[未読]
【40587】Re:抽出の条件 m2m10 06/7/18(火) 15:51 発言[未読]
【40599】Re:抽出の条件 質問(初心者A氏) 06/7/18(火) 17:37 発言[未読]
【40600】Re:抽出の条件 いなば 06/7/18(火) 18:09 発言[未読]
【40635】Re:抽出の条件 ハチ 06/7/19(水) 14:40 発言[未読]
【40676】Re:抽出の条件 KAZU 06/7/20(木) 12:26 発言[未読]
【40681】Re:抽出の条件 質問(初心者A氏) 06/7/20(木) 13:05 お礼[未読]

【40586】抽出の条件
質問  質問(初心者A氏)  - 06/7/18(火) 15:46 -

引用なし
パスワード
   抽出の条件で教えて下さい。
 色々処理していますが下のようなif文で条件は満たしました。
 しかし、この書き方だとソートを工夫しないとなりません。
 もっと簡単に記載できないものでしょうか?

 tori   変数
 nentuki  変数

概要)
 条件に一致したらデータを加算したり減算したりする。
 
Do While Cells(i, 26) <> ""
  If CStr(Cells(i, 26).Value) = tori Then
    If CStr(Cells(i, 28).Value) = "1" Then
     If CStr(Cells(i, 18).Value) = nentuki Then
       If CStr(Cells(i, 27).Value) = "500" Then
         If CStr(Cells(i, 17).Value) = "2" Then
          goke1 = goke1 - Cells(i, 11).Value
          i = i + 1
         Else
          goke1 = goke1 + Cells(i, 11).Value
          i = i + 1
         End If
       Else
         If CStr(Cells(i, 17).Value) = "2" Then
          goke2 = goke2 - Cells(i, 11).Value
          i = i + 1
         Else
          goke2 = goke2 + Cells(i, 11).Value
          i = i + 1
         End If
       End If
     Else
        Exit Do
     End If
    Else
        Exit Do
    End If
  Else
        Exit Do
  End If
    
  Loop

【40587】Re:抽出の条件
発言  m2m10  - 06/7/18(火) 15:51 -

引用なし
パスワード
   こんちは
 シートのサンプルも欲しいですね。

【40599】Re:抽出の条件
発言  質問(初心者A氏)  - 06/7/18(火) 17:37 -

引用なし
パスワード
    シートとは何でしょうか?

 一応さっき添付した内容で処理しているのですが・・・

 select case とかうまく利用すればよさそうな気がして・・

【40600】Re:抽出の条件
発言  いなば  - 06/7/18(火) 18:09 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
> シートとは何でしょうか?
>
> 一応さっき添付した内容で処理しているのですが・・・
>
> select case とかうまく利用すればよさそうな気がして・・

きっと以前質問して、その続きなのかとは思いますが。
私はその質問を見ていません。

よって、コードの内容を、シート上のどこの部分を読んで条件分岐しているとか読み解いていかないとですよね。

コードを提示して、「さぁ読み解け!」と言っているような気がします。
シートレイアウトはどうなっているとか、条件は○○とか。
そういうものがあれば、より多くの人に質問(初心者A氏)さんの質問に対する回答を与えることになると思いますよ。

回答でなくて申し訳ありません。

【40635】Re:抽出の条件
発言  ハチ  - 06/7/19(水) 14:40 -

引用なし
パスワード
   ▼質問(初心者A氏) さん:
> select case とかうまく利用すればよさそうな気がして・・

良くみてませんが。
Select Caseを利用するなら

Select Case True
  Case CStr(Cells(i, 26).Value) = tori
    '処理・・・・
  Case CStr(Cells(i, 28).Value) = "1"
    '処理・・・・
  Case Else
    '処理・・・・
End Select

こんな感じで書いていけば、できそうです。

【40676】Re:抽出の条件
発言  KAZU  - 06/7/20(木) 12:26 -

引用なし
パスワード
   良くわかんないですが・・・。

こんな方法もありかも・・・。

===================================================
やりたい事はこんな感じなんだと思いました。

行変数: i
繰り返し定義
26列が空白になる迄

前提条件
26列目を文字列変換した値がtori
28列目を文字列変換した値が"1"
18列目を文字列変換した値がnentuki
27列目を文字列変換した値が"500"

直条件
17列目を文字列変換した値が"2"

T: goke1 = goke1 - Cells(i, 11).Value
  i = i + 1
F: goke1 = goke1 + Cells(i, 11).Value
  i = i + 1

前提条件を満たさない場合
繰り返しを終了

===================================================

Dim Chk As Boolean


Do While .Cells(1, 26).Value <> ""
With Rows(i)
  Chk = CStr(.Cells(1, 26).Value) = tori
  Chk = Chk And CStr(.Cells(1, 28).Value) = "1"
  Chk = Chk And CStr(.Cells(1, 18).Value) = nentuki
  Chk = Chk And CStr(.Cells(1, 27).Value) = "500"

  If Chk Then
    goke1 = goke1 + (IIf(CStr(.Cells(1, 17).Value) = "2", -1 * Cells(i, 11).Value, Cells(i, 11).Value))
    i = i + 1
  Else
    Exit Do
  End If
End With
Loop

【40681】Re:抽出の条件
お礼  質問(初心者A氏)  - 06/7/20(木) 13:05 -

引用なし
パスワード
   ありがとうございました。
すきりして見やすくなりました。


▼KAZU さん:
>良くわかんないですが・・・。
>
>こんな方法もありかも・・・。
>
>===================================================
>やりたい事はこんな感じなんだと思いました。
>
>行変数: i
>繰り返し定義
>26列が空白になる迄
>
>前提条件
>26列目を文字列変換した値がtori
>28列目を文字列変換した値が"1"
>18列目を文字列変換した値がnentuki
>27列目を文字列変換した値が"500"
>
>直条件
>17列目を文字列変換した値が"2"
>
>T: goke1 = goke1 - Cells(i, 11).Value
>  i = i + 1
>F: goke1 = goke1 + Cells(i, 11).Value
>  i = i + 1
>
>前提条件を満たさない場合
>繰り返しを終了
>
>===================================================
>
>Dim Chk As Boolean
>
>
>Do While .Cells(1, 26).Value <> ""
>With Rows(i)
>  Chk = CStr(.Cells(1, 26).Value) = tori
>  Chk = Chk And CStr(.Cells(1, 28).Value) = "1"
>  Chk = Chk And CStr(.Cells(1, 18).Value) = nentuki
>  Chk = Chk And CStr(.Cells(1, 27).Value) = "500"
>
>  If Chk Then
>    goke1 = goke1 + (IIf(CStr(.Cells(1, 17).Value) = "2", -1 * Cells(i, 11).Value, Cells(i, 11).Value))
>    i = i + 1
>  Else
>    Exit Do
>  End If
>End With
>Loop

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