添付のような表があります。
右の表を、左の表の該当する欄にデータを取り込む作業です。
頻度は、月1回です。
バタバタと、他の作業をしながらの作成となるのでなるべく楽に作成したいと思っています。
マクロで、実現は不可能でしょうか?
同じファイル内のシートの別れたデータとなっています。
ご教示願います。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
例えば、以下のようなことをする必要があればマクロを使用した方が
楽かと思います。
・工事立入者所属ごとにシートを作成する
・作業内容ごとにシートを作成する
マクロでもできますが、上から順に表示するだけであれば、
他の方の回答のように式をいれるのが一番簡単かと思います。
左のシートを「print」、右のシートを「data」と過程して、標準モジュールに以下のような
マクロを作成しました。
動くことだけしか確認していないので汚いソースですいません…
出力する新規月を「2」で固定していますが、実際は汎用的に処理できるように
したほうがよいと思います。
Option Explicit
'/ Sheet名
Private Const cpSheetPrint As String = "print"
Private Const cpSheetData As String = "data"
'/ 各Sheetの処理開始行
Private Const cpStartRowPrint As Long = 4
Private Const cpStartRowData As Long = 2
'/ ◆列定数(printシート)
Private Const cpColPrt_No As Long = 1
Private Const cpColPrt_Name As Long = 2
Private Const cpColPrt_adress As Long = 3
'/ ◆列定数(dataシート)
Private Const cpColDat_No As Long = 1
Private Const cpColDat_Name As Long = 2
Private Const cpColDat_adress As Long = 3
Private Const cpColDat_Month As Long = 4
Private Const cpColDat_Flg As Long = 5
'/出力する明細の記号
Private Const cpMark As String = "○"
Public Sub Out_Data()
Dim plRowMax As Long Dim plDataRow As Long Dim plPrintRow As Long Dim plDataSheet As Worksheet Dim plPrintSheet As Worksheet '/ワークシートのセット Set plDataSheet = ThisWorkbook.Sheets(cpSheetData) Set plPrintSheet = ThisWorkbook.Sheets(cpSheetPrint) '/dataシートの最終行セット plRowMax = plDataSheet.Range("A65536").End(xlUp).Row plPrintRow = cpStartRowPrint For plDataRow = cpStartRowData To plRowMax '/出力判定 If plDataSheet.Cells(plDataRow, cpColDat_Month).Value = 2 And _ plDataSheet.Cells(plDataRow, cpColDat_Flg).Value = cpMark Then plPrintSheet.Cells(plPrintRow, cpColPrt_No).Value = plDataSheet.Cells(plDataRow, cpColDat_No).Value plPrintSheet.Cells(plPrintRow, cpColPrt_Name).Value = plDataSheet.Cells(plDataRow, cpColDat_Name).Value plPrintSheet.Cells(plPrintRow, cpColPrt_adress).Value = plDataSheet.Cells(plDataRow, cpColDat_adress).Value plPrintRow = plPrintRow + 1 End If Next plDataRow Exit Sub
End Sub
投稿2015/10/20 09:39
編集2015/10/20 10:15総合スコア357
0
マクロで実現可能かどうかという質問でしら、可能だと思います。
それ以前に、画像データに住所や名前等の個人情報が載ってますが、そちらは
大丈夫でしょうか?
架空の情報でなければ、早急に削除する事をお勧めします。
個人情報漏洩にあたると思います。
ネットにアップする際は住所や名前は黒塗りにするか記号に変換してアップした方がよいと思います。
投稿2015/10/20 09:24
総合スコア32
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/20 10:23
2015/10/21 01:33
2015/10/21 04:28
0
単純に、単純に右の氏名の列を上から、左の氏名の列に簡単にコピーしたいということでしょうか?
それとも行も関係したり、順番もでしょうか?
単純に右から左であれば、右側の表が「Sheet2」に書かれていて氏名がB列で、2行目にあれば左側の氏名のところに関数として「=Sheet2!B2」として、あとはそのセルをコピペで下まで張り付ければ終わりです。
右の表から左へのコピペでOKです。
それでなければ、右側の表で対象の列を上から下まで選択して、コピーして、左側の表で「形式を選択して貼り付け」から「値」を選んで張り付ければいいだけです。
マクロを作ってまでの作業ではない気がします。
もっと複雑なことをしたいのであれば、別ですが
投稿2015/10/20 09:23
総合スコア144
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/20 09:45
2015/10/21 01:03
2015/10/21 01:54
2015/10/23 05:14
2015/10/25 23:48