質問: 別シートから値のある行を検索し、別シートに転記 シート1とシート2があり、 シート1のa7がシート2のb列にあり、シート1のb20がシート2のその行のd列の値と同じ場合、シート2該当行のf列の値をシート1のl20に書き込むのですが、どのようにマクロを記述すればいいでしょうか 例えば、 シート1のa7に「a社」、b20に「商品a」があり、 シート2のb10に「a社」が、d10に「商品a」がある場合、f10の値をシート1のl20に返す方法です。 シート2のb列には「b社」や「c社」もあるため、b列の中からシート1のa7と合致する行を検索することになります。
回答: あまり手の込んだことをせず簡単に,上から順番に調べます。 sub macro1() dim i as long for i = 1 to worksheets("sheet2").range(b65536").end(xlup).row if worksheets("sheet2").cells(i, "b") = worksheets("sheet1").range("a7") _ and worksheets("sheet2").cells(i, "d") = worksheets("sheet1").range("b20") then worksheets("sheet1").range("l20") = worksheets("sheet1").cells(i, "f") exit sub end if next i end sub #ご利用のエクセルのバージョンも相変わらずナイショのままですが,エクセル2007以降をご利用で,f列の値が数値であれば,sumifs関数を使った方が遙かに簡単です。 ご相談投稿では,普段あなたが使うソフトのバージョンまでキチンと明記する事を憶えて下さい。