• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの複数条件分岐について)

VBAの複数条件分岐について

このQ&Aのポイント
  • VBAでシート1にある表から条件に合致するデータのみシート2に抽出する方法について質問です。
  • 現在はシート1のE2セルの値がシート1のB列の値と比較して該当するものを抽出しています。
  • 新たに、シート1のE1のセルの値が20より小さい場合にはE2のセルの値がシート1のB列と比較して該当するものを、シート1に貼り付け、E1のセルの値が20以上の場合にはE2のセルの値がシート1のD列と比較して該当するものをシート1に貼り付ける条件に変更したいのですが、どのように変更すればよいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

これでいい? If sh1.Cells(i, "B") <= sh1.Range("E2") And sh1.Range("E2") < 20 Then sh2.Cells(k, "B") = sh1.Cells(i, "A") sh2.Cells(k, "C") = sh1.Cells(i, "B") k = k + 1 ElseIf sh1.Cells(i, "d") <= sh1.Range("E2") And sh1.Range("E2") >= 20 Then sh2.Cells(k, "B") = sh1.Cells(i, "A") sh2.Cells(k, "C") = sh1.Cells(i, "B") k = k + 1 End If

creopatra
質問者

お礼

ありがとうございます。 試していたら時間がかかってしまい 返事が遅くなってしまいました。 なんとかできました。 ところで、はじめから調べて質問をすればよかったのですが、 条件が増えてしまい、 If sh1.Cells(i, "B") <= sh1.Range("E2") And sh1.Range("E2") < 20 Then の部分のB列との比較で B列とC列になってしまったのですが、その場合は If sh1.Cells(i, "B") <= sh1.Range("E2") And sh1.Cells(i, "C") <= sh1.Range("E2") And sh1.Range("E2") < 20 Then のようにするしかないでしょうか? ほかに記述の方法があれば教えていただきたいのですが・・・ 何度も申し訳ありません。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

>シート1のE1のセルの値が20より小さい場合 if Sh1.Cells(1,"E")<20 Then となる >シート1のE1のセルの値が20以上の場合、 if Sh1.Cells(1,"E")>=20 then とする または Else とする ーーーー >かつE2のセルの値がシート1のB列の値と比較して該当するものを シート1に貼り付け、 E2はSh1のE2か?あいまいでは。 >該当するものを どういう条件に該当することか?この意味は?大小? >「シート1に貼り付け、 質問の例からして、シート2ではないのか?

creopatra
質問者

お礼

すみません、ご指摘のとおりです。 E2はSh1のE2、シート1に貼り付けは シート2に貼り付けです。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>If sh1.Cells(i, "B") <= sh1.Range("E2") And sh1.Cells(i, "C") <= sh1.Range("E2") And sh1.Range("E2") < 20 Then のようにするしかないでしょうか? 良いのでは、問題無いと思います >ほかに記述の方法があれば教えていただきたいのですが・・・ 何が知りたいのでしょう? 各値の詳細や処理の目的が解れば、他の規則性や条件を見つけることが できるかもしれないが、質問者さんの書き込み以上の情報が無いので無理 初心者には、適当だと思いますよ、解りやすいし

creopatra
質問者

お礼

ありがとうございます。 他の記述というのは今後検索の列が増えていく可能性があったので セルをまとめて記述できないかなと思ったのです。 でもおっしゃるとおり、自分がわかることをすこしずつやっていくのがいいですね。 ありがとうございました。

関連するQ&A