• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel 別ブックの検索と貼り付け)

Excel別ブックの検索と貼り付け

このQ&Aのポイント
  • Excelで別のブックにおいて、条件に基づいて検索を行い、結果を貼り付けたいです。申請書ファイルには確認ボタンがあり、ボタンをクリックすると、申請書ファイルの特定のセルの値を他のブックから検索し、該当する行に値を貼り付けます。
  • 添付されたファイルには2つのシートがありますが、一部のセルは非表示になっています。申請書ファイルには、確認ボタンがありますが、ボタンをクリックすると、申請書ファイルの特定のセルの値を台帳ファイルの特定の列から検索し、該当する行に値を貼り付けます。
  • 申請書ファイルには、確認ボタンがあります。ボタンをクリックすると、申請書ファイルの特定のセルの値を台帳ファイルの特定の列から検索し、該当する行に値を貼り付けます。また、申請書ファイルの特定のセルの値を貼り付ける理由は、申請書ファイルの特定の列の隣のセルの値に基づいて行うためです。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.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

yamato_nabe
質問者

お礼

HohoPapa様 ご教示ありがとうございました。 希望通りの動作ができ、感謝いたします。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

>台帳シートの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を上書き保存して閉じる  

yamato_nabe
質問者

補足

Hohopapa様 ご回答ありがとうございました。 問い合わせの内容について、回答させて頂きます。 >台帳シートのT列+該当した値と同じ行に貼り付け とは、 台帳シートのB列から探し、見つかった行のT列に貼り付け ということでいいですね? >>そうです >AL27の値 とは、"1.不要"という文字列ですね? >>そうです。 >・AK27:AK29の値は重複はありません この3つのセルのうち、1つだけが必ずTrueだということですね? >>そうです。 また、台帳.xlsxはどのか固定なフォルダーにありますか? それとも、フォルダーが固定ではなく 申請書.xlsmと同じフォルダーにありますか? >台帳.xlsxは固定フォルダーにありますが、申請書.xlsmフォルダーとは別フォルダーにあります。 >コードとすべき内容は以下となりますが期待通りですか? ご提案頂きました動作内容で問題ありません。 よろしくお願いいたします。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

開発タブの「マクロの記録」を使ってみて下さい。

関連するQ&A