プロが教える店舗&オフィスのセキュリティ対策術

Excelについて教えてください。
下記の内容が、数式で行う事が出来るのか、又は、マクロで出来るのかを含めて教えてください。
作業ブックのシート名「確認申請(建築物)」の中にAccessと連携している物件データがあります。
行の「A~DA」迄の行が、一つの物件です。
例えば
「A1~DA1」は各項目です(変更なし)
「A2~DA2」が「北海太郎邸新築工事」です。
行は、日々、物件が更新(追加)されますので、シート内は無限に追加されます。
私の希望の条件
1. BJ列に担当者の「山田」の文字があり、
且つ
2. BK列が「空白」の場合に
シート名「個人データ」の「A1」行に「北海太郎邸新築工事」の情報「A2~DA2」までをコピーできる方法を教えてください。
同じく
シート名「個人データ」の「A2」行に「北海花子邸新築工事」の情報「A15~DA15」までをコピーできる等々の方法を教えてください。
シート名「確認申請(建築物)」の中には担当者「山田」の物件が多数ありますので
シート名「個人データ」の「A1」行から「A2~」に全て該当する物件をコピーが出来る方法を教えてください。
よろしくお願いいたします。

質問者からの補足コメント

  • 回答ありがとうございます。
    ご指示の通りに
    2番目のコードを設定し、マクロwを実行しましたが
    rngPersonal.CopyFromHere wsCheck.Range(rngCheck.Row, 1, 16)
    の部分の「.Range」の部分を示して
    画像のようなエラーが出てしましました。
    解決方法を教えてください。
    よろしくお願いいたします。

    「エクセルについて教えてください。」の補足画像1
    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/28 12:06
  • 回答ありがとうございます。
    ご指示の通り、2番目のコードを設定して、マクロを実行しましたが、
    コードの一部「rngPersonal.CopyFromHere wsCheck.Range(rngCheck.Row, 1, 16)」の
    「.Range」部分の色が変わっていてマクロを実行できませんでした。
    申し訳ありません。
    解決方法を教えてください。
    よろしくお願いいたします。

    「エクセルについて教えてください。」の補足画像2
    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/28 12:20
  • うーん・・・

    回答ありがとうございます。
    いつもありがとうございます。
    アドバイス通りにマクロを記録を試みたのですが、中々上手くできません、
    申し訳ありません、コードを教えていただけますでしょうか。
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/06/28 14:41

A 回答 (3件)

こんにちは アドバイスだけですが


なさりたい処理はアクションの記録だけでマクロを作成できると思われます

マクロの記録を開始
シート名「確認申請(建築物)」のA1セルを選択
Ctrlキー+Shiftキー+* で範囲選択
リボン データタグより フィルターを押し
BJ列で担当者「山田」に絞り
Ctrl+Cでコピー
シート名「個人データ」の「A1」を選択し Enterキーで貼り付け確定
シート名「確認申請(建築物)」に戻り リボンデータタグのフィルターを押してフィルターモードを解除
記録終了

「北海花子邸新築工事」の情報で絞りたい場合は上記アクションの絞る列を加えれば良いと思います

他人様の回答をどうこう言うつもりはありませんが 無機なものとして
#1様のコードは AIから生成された大凡そのままのコードと思われます

現状 生成AIは生成した回答に対して検証する機能はありません
自由な検証機能を持たせると人類は滅亡する・・かもしれませんしね(W

AIの回答は評価、検証する必要があり、活用するにも運用者のスキルが必要になります(QA共に)

気にしない方がよろしいと思います
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
何とか自身でできました。
いつもありがとうございます。

お礼日時:2023/06/28 15:53

FILTER 関数をお勧めします


https://support.microsoft.com/ja-jp/office/filte …
    • good
    • 0

マクロで行うことができます。



Sub CopyData()

' 確認申請(建築物)シートのBJ列に担当者の「山田」の文字があり、BK列が「空白」の場合に、個人データシートのA1行にその行のデータをコピーする
Dim wsCheck As Worksheet
Dim wsPersonal As Worksheet
Dim rngCheck As Range
Dim rngPersonal As Range

' 確認申請(建築物)シートを参照する
Set wsCheck = ThisWorkbook.Sheets("確認申請(建築物)")

' 個人データシートを参照する
Set wsPersonal = ThisWorkbook.Sheets("個人データ")

' BJ列に担当者の「山田」の文字があり、BK列が「空白」の行を検索する
For Each rngCheck In wsCheck.Range("BJ:BJ").Cells
If rngCheck.Value = "山田" And rngCheck.Offset(1).Value = "" Then

' 個人データシートのA1行にその行のデータをコピーする
Set rngPersonal = wsPersonal.Range("A1")
rngPersonal.CopyFromHere wsCheck.Range(rngCheck.Row, 1, 16)

End If
Next rngCheck

End Sub


このマクロを実行すると、確認申請(建築物)シートのBJ列に担当者の「山田」の文字があり、BK列が「空白」の行のデータを個人データシートのA1行にコピーすることができます。

また、シート名「確認申請(建築物)」の中には担当者「山田」の物件が多数ありますので、シート名「個人データ」の「A1」行から「A2~」に全て該当する物件をコピーするには、次のマクロを使用することができます。


Sub CopyAllData()

' 確認申請(建築物)シートのBJ列に担当者の「山田」の文字がある行のデータを個人データシートのA1行から順にコピーする
Dim wsCheck As Worksheet
Dim wsPersonal As Worksheet
Dim rngCheck As Range
Dim rngPersonal As Range

' 確認申請(建築物)シートを参照する
Set wsCheck = ThisWorkbook.Sheets("確認申請(建築物)")

' 個人データシートを参照する
Set wsPersonal = ThisWorkbook.Sheets("個人データ")

' BJ列に担当者の「山田」の文字がある行を検索する
For Each rngCheck In wsCheck.Range("BJ:BJ").Cells
If rngCheck.Value = "山田" Then

' 個人データシートのA1行にその行のデータをコピーする
Set rngPersonal = wsPersonal.Range("A1")
rngPersonal.CopyFromHere wsCheck.Range(rngCheck.Row, 1, 16)

' A2行に移動する
rngPersonal.Offset(1, 0).Select

End If
Next rngCheck

End Sub


このマクロを実行すると、確認申請(建築物)シートのBJ列に担当者の「山田」の文字がある行のデータを個人データシートのA1行から順にコピーすることができます。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!