- ベストアンサー
Excel別ブックの検索と貼り付け
- Excelで別のブックにおいて、条件に基づいて検索を行い、結果を貼り付けたいです。申請書ファイルには確認ボタンがあり、ボタンをクリックすると、申請書ファイルの特定のセルの値を他のブックから検索し、該当する行に値を貼り付けます。
- 添付されたファイルには2つのシートがありますが、一部のセルは非表示になっています。申請書ファイルには、確認ボタンがありますが、ボタンをクリックすると、申請書ファイルの特定のセルの値を台帳ファイルの特定の列から検索し、該当する行に値を貼り付けます。
- 申請書ファイルには、確認ボタンがあります。ボタンをクリックすると、申請書ファイルの特定のセルの値を台帳ファイルの特定の列から検索し、該当する行に値を貼り付けます。また、申請書ファイルの特定のセルの値を貼り付ける理由は、申請書ファイルの特定の列の隣のセルの値に基づいて行うためです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
後記のようなコードでいかがでしょうか。 なお、 Debug.Print PutData Debug.Print KNum Debug.Print HitFlg の3行は、動作確認が終えたら、削除、あるいはコメントアウトしてください。 Option Explicit Sub sample() Dim KNum As String Dim PutData As String Dim i As Long Dim tgBook As Workbook Dim HitFlg As Boolean '>台帳.xlsxは固定フォルダーにあります Const tgDir = "C:\work" With ThisWorkbook.Sheets("申請書") '(01)変数KNumに申請書.xlsmの申請書シートのAC27の値を格納 KNum = .Cells(27, 29).Value '(02)AK27以下3セルの中でTrueのセルを探し、 ' ヒットした行のAL列の値を変数PutDataに格納 For i = 27 To 29 If .Cells(i, 37).Value = True Then PutData = .Cells(i, 38).Value Exit For End If Next i End With Debug.Print PutData Debug.Print KNum '(03)台帳.xlsxを開く Set tgBook = Workbooks.Open(tgDir & "\台帳.xlsx") '(04)台帳.xlsxの台帳シートのB7セル以下から、変数KNumの値を探す i = 7 HitFlg = False Do With tgBook.Sheets("台帳") If .Cells(i, 2).Value = "" Then Exit Do '見つかったら、 If .Cells(i, 2).Value = KNum Then HitFlg = True .Cells(i, 20).Value = PutData Exit Do End If i = i + 1 End With Loop Debug.Print HitFlg '見つかったら台帳.xlsxを閉保存 If HitFlg = True Then tgBook.Save End If '台帳.xlsxを閉じる tgBook.Close End Sub
その他の回答 (2)
- HohoPapa
- ベストアンサー率65% (455/693)
>台帳シートのT列+該当した値と同じ行に貼り付け とは、 台帳シートのB列から探し、見つかった行のT列に貼り付け ということでいいですね? >AL27の値 とは、"1.不要"という文字列ですね? >・AK27:AK29の値は重複はありません この3つのセルのうち、1つだけが必ずTrueだということですね? また、台帳.xlsxはどのか固定なフォルダーにありますか? それとも、フォルダーが固定ではなく 申請書.xlsmと同じフォルダーにありますか? コードとすべき内容は以下となりますが期待通りですか? (01)変数KNumに申請書.xlsmの申請書シートのAC27の値を格納 (02)AK27以下3セルの中でTrueのセルを探し、 ヒットした行のAL列の値を変数PutDataに格納 (03)台帳.xlsxを開く (04)台帳.xlsxの台帳シートのB7セル以下から、変数KNumの値を探す 見つからなかったら、 (05)台帳.xlsxを閉じ、マクロから抜ける 見つかったら、 (06)見つかった行のT列に変数PutDataを格納 (07)台帳.xlsxを上書き保存して閉じる
補足
Hohopapa様 ご回答ありがとうございました。 問い合わせの内容について、回答させて頂きます。 >台帳シートのT列+該当した値と同じ行に貼り付け とは、 台帳シートのB列から探し、見つかった行のT列に貼り付け ということでいいですね? >>そうです >AL27の値 とは、"1.不要"という文字列ですね? >>そうです。 >・AK27:AK29の値は重複はありません この3つのセルのうち、1つだけが必ずTrueだということですね? >>そうです。 また、台帳.xlsxはどのか固定なフォルダーにありますか? それとも、フォルダーが固定ではなく 申請書.xlsmと同じフォルダーにありますか? >台帳.xlsxは固定フォルダーにありますが、申請書.xlsmフォルダーとは別フォルダーにあります。 >コードとすべき内容は以下となりますが期待通りですか? ご提案頂きました動作内容で問題ありません。 よろしくお願いいたします。
- aokii
- ベストアンサー率23% (5210/22062)
開発タブの「マクロの記録」を使ってみて下さい。
お礼
HohoPapa様 ご教示ありがとうございました。 希望通りの動作ができ、感謝いたします。