[[20140803103734]] 『エクセルマクロで複数条件での検索方法 2』(もみじ坂) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルマクロで複数条件での検索方法 2』(もみじ坂)

先日大変お世話になりました。
教えていただいたコードが大活躍で大変助かりました。

使用しているうちにもう一つの条件を追加したいのですが。
うまくいきませんでした
原因がわかりましたら教えてください。よろしくお願いします。

[[20140709193057]]

【検索】

 	[A]	[B]	[C]	[D]
 [2]	028963			
「3」	NO	商品名前	サイズ	価格
「4」	A01	人参	L	401 
「5」	A03	トマト	特	503 

【list】

 [C]	[D]	[E]	[f]	[g	[h]	[i]	[j]	[k]	[l]	[m]	[n]	[o]		

 								サイズ	価格2	 027021	027638	028023	028963	033732
 A01	人参							L	501 	101 	201 	301 	401 	
 A02	きゅうり							M	502 	102 	202 	302 	402 	
 A03	トマト							特	503 	103 	203 	303 		
 A04	なす							N	504 	104 	204 	304 	404 	

コード

    Dim リスト As Range         '価格セル範囲
    Dim 会社コード As Range     '会社コードセル範囲
    Dim 商品コード As Range     '商品コードセル範囲
    Dim 商品行                  '商品コード検索結果(行)
    Dim 会社列                  '会社コード検索結果(列)
    Dim r As Long
    Set リスト = Worksheets("list").Range("L3:CZ500")
    Set 会社コード = リスト.Rows(1).Offset(-1)
    Set 商品コード = リスト.Columns(1).Offset(, -10)
    With Worksheets("検索")
        For r = 4 To 38
            商品行 = Application.Match(.Cells(r, "A"), 商品コード, 0)
            会社列 = Application.Match(.Cells(2, 1), 会社コード, 0)

’=======★追加条件の部分=======
’★検索結果が空欄の時リストシートの11行目の価格を引っ張ってくる
’★検索結果ある時は会社別価格を引っ張ってくる

            If IsNumeric(商品行) And IsNumeric(会社列)="" Then
                .Cells(r, "D").Value = リスト.Cells(商品行, "K").Value ' 価格
            Else
       
                .Cells(r, "D").Value = リスト.Cells(商品行, 会社列).Value’会社別価格

            End If
        Next
    End With

’======追加条件2======
’検索シート M5 に ’特取’がある場合
’検索シートの最終行 +1 に 特取と記載する

   IF Worksheets("検索").Range("M5")="特取" Then
     i = Worksheets("検索").Cells(Rows.Count, 1).End(xlUp).Row 
     Worksheets("検索").Cells(i, "A").Value = "000"

            Worksheets("検索").Cells(i, "B").Value = "特取"
    End If

コードの考え方がずれているんでしょうかすみません ≧≦
実行したところ
「形が一致しませんと。。。。。」

< 使用 Excel:Excel2010、使用 OS:Windows7 >


追加条件2のほうは、突然請求書シートがでてきてよくわかりません。
追加条件1のみ。
 if文のところは、
  1)商品コードが見つかったかどうか
  2)会社コードがみつかったかどうか
 の2段階で評価するとよいです。

 また★の行もを修正する必要があります。

 >リスト.Cells(商品行, "K").Value
 は、リスト内の相対的な位置なので

 リスト.Cells(商品行, "A").Value
 とします。

 Sub 計算()
    Dim リスト As Range         '価格セル範囲
    Dim 会社コード As Range     '会社コードセル範囲
    Dim 商品コード As Range     '商品コードセル範囲
    Dim 商品行                  '商品コード検索結果(行)
    Dim 会社列                  '会社コード検索結果(列)
    Dim r As Long
    Set リスト = Worksheets("list").Range("K3:CZ500")   '★
    Set 会社コード = リスト.Rows(1).Offset(-1)
    Set 商品コード = リスト.Columns(1).Offset(, -9)     '★
    With Worksheets("検索")
        For r = 4 To 38
            商品行 = Application.Match(.Cells(r, "A"), 商品コード, 0)
            会社列 = Application.Match(.Cells(2, "A"), 会社コード, 0)
            If IsNumeric(商品行) Then
                If IsNumeric(会社列) Then
                    .Cells(r, "D").Value = リスト.Cells(商品行, 会社列).Value
                Else
                    .Cells(r, "D").Value = リスト.Cells(商品行, "A").Value
                End If
            Else
                    .Cells(r, "D").Value = "未登録"
                End If
            End If
        Next
    End With

 End Sub

(マナ) 2014/08/03(日) 11:59


(マナ)様

度々ありがとうございます。
お陰様で今回も無事に欲しい結果を得ることができました
大変勉強になりました。

また何かありましたらよろしくお願いします。

       商品行 = Application.Match(.Cells(r, "A"), 商品コード, 0)

             会社列 = Application.Match(.Cells(2, "A"), 会社コード, 0)

 ★IF関数の場合 すべて 条件を 入れてから 最後に欲しい結果を入力すれば うまくいくんですね
  感激で本当に大変助かりました。
  ゚・:,。☆Uo・ェ・oU/~♪了└|力"├ テ"ス ♪~\Uo・ェ・oU ☆,。・:・゚

           If IsNumeric(商品行) Then
                If IsNumeric(会社列) Then

                   If リスト.Cells(商品行, 会社列).Value = "" Then
                      .Cells(r, "D").Value = リスト.Cells(商品行, 1).Value '範囲がRange("K3:CZ500") のため K=1列目
                   Else
                      .Cells(r, "D").Value = リスト.Cells(商品行, 会社列).Value
                   End If
                 End If
            Else
                    .Cells(r, "D").Value = "未登録"

            End If
        Next

       If .Range("M5") = "特取" Then
         i = .Cells(Rows.Count, 1).End(xlUp).Row + 1
             .Cells(i, "A").Value = "000"
             .Cells(i, "B").Value = "特取"
       End If

>追加条件2のほうは、突然請求書シートがでてきてよくわかりません。
はすみません コピペ―で 使用していたので そのままついてきちゃいました (*´ノД`)

(もみじ坂) 2014/08/03(日) 13:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.