[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 可視セルのコピーを別ブックに貼り付け』(JIRO)
VBA初心者です。教えてください。
開いている2つのBookがあります
TENKI元.xlsm
TENKI先.xlsm (このBOOKにマクロを作成)
...................................................................
TENKI元.xlsmの中身 項目行は11行目
加工日 加工順 親コード 子コード1 子コード2 機械 数
2019/03/15 1 xxxxx1 yyyyyy1 zzzzzz1 3 2
2019/03/15 1 xxxxx2 zzzzzz2 2 1
2019/03/18 1 xxxxx3 zzzzzz3 1 1
2019/03/18 1 xxxxx4 zzzzzz4 1 2
2019/03/19 1 xxxxx5 yyyyyy2 zzzzzz5 4 1
2019/03/19 1 xxxxx6 yyyyyy3 zzzzzz6 6 2
2019/03/20 1 xxxxx7 zzzzzz7 3 3
2019/03/20 1 xxxxx8 zzzzzz8 4 1
2019/03/20 1 xxxxx9 yyyyyy4 zzzzzz9 5 2
2019/03/20 1 xxxxx10 zzzzzz10 6 1
...................................................................
TENKI先.xlsmの中身 項目行は11行目
加工日 子コード1 子コード2 数 更新日
...................................................................
とりあえず、1行分をブック間で転記できることまでは確認できたものの、先にすすめず・・・、すみませんが、教えてください。
Sub tenki()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set wb1 = ThisWorkbook 'TENKI先.xlms
Set wb2 = Workbooks("TENKI元.xlsm")
Set ws1 = wb1.Worksheets("saki") 'TENKI先.xlmsのシート
Set ws2 = wb2.Worksheets("moto") 'TENKI元.xlmsのシート
ws1.Range("A12").Value = ws2.Range("A12").Value
ws1.Range("B12").Value = ws2.Range("D12").Value
ws1.Range("C12").Value = ws2.Range("E12").Value
ws1.Range("D12").Value = ws2.Range("G12").Value
End Sub
やりたいことと、条件ですが、
1)TENKI元.xlsmから、加工日、子コード1、子コード2、数をTENKI先.xlsmに転記したい
2)TENKI元.xlsmの機械列の6でオートフィルタをかけた可視セルのみをTENKI先.xlsmに転記したい
3)子コード1は必ず全行には入力されていない
4)行は可変ですが、子コード1以外は空白行はない
5)範囲はCellsで指定をしたい
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
どういう意味でしょうか?
(マナ) 2019/03/22(金) 22:43
>1)TENKI元.xlsmから、加工日、子コード1、子コード2、数をTENKI先.xlsmに転記したい >2)TENKI元.xlsmの機械列の6でオートフィルタをかけた可視セルのみをTENKI先.xlsmに転記したい
(マナ) 2019/03/22(金) 23:07
5)の件は
ws1.Range("A12").Value = ws2.Range("A12").Value
↓このようにしたいという意味でした。
ws1.Cells(12, 1).Value = ws2.Cells(12, 1).Value
最初↓としてしまい、エラーですすまず、質問させていただきました。
ws1.Range(Cells(12, 1)).Value = ws2.Range(Cells(12, 1)).Value
ws1.Range(ws1.Cells(12, 1)).Value = ws2.Range(ws2.Cells(12, 1)).Value
RangeとCellsの使い方がイマイチな理解なもので、わかりづらい質問になってしまい、すみません
マナ様のメッセージを見て目が覚め↓これにすると良いのかなと思い、実行したら転記できました。
ws1.Cells(12, 1).Value = ws2.Cells(12, 1).Value
1)2)はAdvancedFilterを使用するということでしょうか?
フィルタオプション自体知りませんでした。教えていただき、ありがとうございます。
元にするデータは日時で読み込んで(1週間分)、約3000行表示されます、転記は約120行になります。
TENKI元.xlsmに影響がなければ問題はないです。
(JIRO) 2019/03/23(土) 09:25
(マナ) 2019/03/23(土) 09:33
転記先は、最新分だけの表示にしたいです。
(JIRO) 2019/03/23(土) 14:46
ならば、全く問題ありません。
シンプルのコードになると思います。
>1)2)はAdvancedFilterを使用するということでしょうか?
はい。ですが、その前に、
>フィルタオプション自体知りませんでした。
ということであれば、まずは手作業で試してみるとよいです。
http://www4.synapse.ne.jp/yone/excel2010/excel2010_filter21.html
そのうえで、「マクロの記録」あるいはネット検索で
たたき台となるものは簡単に入手できます。
(マナ) 2019/03/23(土) 15:39
ありがとうございます。
いろいろ試してみたいと思います。
(JIRO) 2019/03/23(土) 16:15
シート(moto)のA列を
条件で絞ったセルのみ CriteriaRange:=ws1.Range(ws1.Cells(1, 6), ws1.Cells(2, 6))
シート(saki)のA列に転記する
つもりで書いたのですが、A列のすべての行が転記されてしまい、条件でしぼれていないようです、
どこが悪いのかを教えて頂きたく・・・
11行目はタイトル行
Sub tenki()
Dim wb1 As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim n As Long
Set wb1 = ThisWorkbook 'TENKI先.xlms
Set ws1 = wb1.Worksheets("moto") '転記元のシート
Set ws2 = wb1.Worksheets("saki") '転記先のシート
wb1.Activate
n = ws1.Cells(11, 1).End(xlDown).Row
ws1.Range(ws1.Cells(12, 1), ws1.Cells(n, 1)).AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=ws1.Range(ws1.Cells(1, 6), ws1.Cells(2, 6)), _ CopyToRange:=ws2.Range("A12"), _ Unique:=False
ws2.Activate
End Sub
(JIRO) 2019/03/23(土) 23:20
(マナ) 2019/03/24(日) 08:27
> ws1.Range(ws1.Cells(12, 1), ws1.Cells(n, 1)).AdvancedFilter _ > Action:=xlFilterCopy, _ > CriteriaRange:=ws1.Range(ws1.Cells(1, 6), ws1.Cells(2, 6)), _ > CopyToRange:=ws2.Range("A12"), _ > Unique:=False
リスト範囲、抽出範囲、どちらも間違っていますね。
これだと手作業でもできないはずです。
(マナ) 2019/03/24(日) 08:56
F1は「機械」F2は「6」が入ります
手動での設定がイマイチ理解できず(思うような結果を得られず)
あるサイトのサンプルを元に作成したのが質問のコードでした。
間違いを指摘していただき、マクロの記憶でよく考えてみました。
最初にマクロの記憶をやるべきでした・・・反省・・・指摘していただいたので、冷静になれました。
↓結果を得ることができました。良かった(泣)(ToT)明日進められます。
項目をmotoとsakiで合わせておくことが、列の抽出になるのだと分かりました。
ws1.Range(ws1.Cells(11, 1), ws1.Cells(n, 7)).AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=ws1.Range(ws1.Cells(1, 6), ws1.Cells(2, 6)), _ CopyToRange:=ws2.Range(ws2.Cells(11, 1), ws2.Cells(11, 4)), _ Unique:=False
ありがとうございました。
(JIRO) 2019/03/24(日) 22:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.