- ベストアンサー
excelのデータをコピーする
tomo8047の回答
- tomo8047
- ベストアンサー率39% (21/53)
ANo.#1 の続きです。 私はスクリプトを書くのが苦手なので、ほとんど「マクロの記録」を小細工してます。 「マクロの記録」だと絶対座標?や名前入りで記録されるので、それを汎用的な書き方に直せばOKです。 まずは記録して、ステップインで動きを確認してみては如何でしょう? 例えば、開いているブックのSheet1に移動してA列をコピー、新しいブックに貼り付けってのはこんな感じ。 Sub Macro1() Sheets("Sheet1").Select Columns("A:A").Select Selection.Copy Workbooks.Add 'Workbooks.Open Filename:=InputBox("Filename?") ActiveSheet.Paste End Sub Sheet1ってシート名じゃなくて、2枚目のシートならSheets(2)で少し汎用的になります。 .Selectの連続を Sheets(5).Columns("A:A").Copy とかに短縮できます。 InputBoxを使えば、さらに汎用的になるのでは? インターネット上を探せば、色んな技も見つかります。 # ANo.#1の「空白を無視して~」は、思うような動きはしないようです。 # ごめんなさい。
関連するQ&A
- Sheet2にある情報をSheet1のA1に1列で
マクロを作りたいのですが、以下のようなものをどうすればできるかで詰まっています。 Sheet2にある情報をSheet1のA1に1列(A列B列C列の順)で並ぶようにしたいです。 Sheet2の内容は変わることがあるので、データがどの行まで入っているかはマクロを走らせるときにチェックしないとわからないかと思います。 [Sheet1] 111 222 333 aa bb aaa bbb ccc ddd eee -------------------------- [Sheet2] A B C 1 111 aa aaa 2 222 bb bbb 3 333 ccc 4 ddd 5 eee 素人な質問かもしれないですが、調べてもわからなかったので、教えていただけると幸いです。
- ベストアンサー
- オフィス系ソフト
- A列にあったものには1、C列にあったものには2
シート1の内容をVBAをつかってシート2のようにしたいです。 つまり、シート1の2行目以降のデータをシート2のB列につなげて、 A列には シート1の1行目に記載している番号をふっていきます。 もともとA列にあったものには1、C列にあったものには2、E列にあったものには3と振りたいのですが、どのようにマクロを書けばいいでしょうか? [Sheet1] A B C D E 1 1 2 3 2 aa aaa aaaa 3 bb bbb bbbb 4 cc cccc 5 dddd ----------------------------- [Sheet2] A B 1 1 aa 2 1 bb 3 1 cc 4 2 aaa 5 2 bbb 6 3 aaaa 7 3 bbbb 8 3 cccc 9 3 dddd
- ベストアンサー
- オフィス系ソフト
- 【少し急いでます】エクセルについて教えてください!
Excel2000を使っています。 A列に重複するデータがあり、B列に別データがあります(20000行強) 例) A B 1 001 aaa 2 001 bbb 3 001 ccc 4 002 aa 5 002 bb 6 003 aaa 7 003 bbb 8 004 ddd 9 004 eee 10 005 aa 11 006 bbb A列で重複する001は3行あり、重複しているデータは1行にまとめてB列のaaa、bbb、cccをつなげたいです。(わかりづらくてすみません) 例) A B 1 001 aaa・bbb・ccc 2 002 aa・bb 3 003 aaa・bbb というようにまとめたいです。 どのような方法がありますでしょうか? よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルのVBAで、異なるブック間でのコピー&ペースト
こんばんは。 エクセルのVBAで、異なるブック間でのコピー&ペーストに関しての質問です。 現在アクティブになっているシートのB4セルをコピーして、 現在開いているシートのブックとは異なる特定の ブック(”Book1")の特定のシート(”Sheet1”)のC5セルに貼り付けたい場合、 ●●●の部分に何と表現すればよいか教えてください。 Range("B4").Copy Destination:=●●● よろしくお願いいたします。
- 締切済み
- Visual Basic
- 抽出データのコピー
OFFICE2016 AAのシートのA列を1件ずつ参照し、BBのシートでそれぞれに対応するデータを抽出し、CCのシートへコピーするマクロを作成していますが、 抽出したデータをコピーした後に保存すると、容量がものすごく大きくなっています。 原因は、コピー後にCCのシートが最終行まで使用されている状態になっているから。 下記は作成途中のマクロです Sub TEST() ' Sheets("CC").Select Cells.Select Selection.ClearContents Dim i As Long i = 1 Dim M As String M = Worksheets("AA").Cells(i, 1).Value Sheets("BB").Select Worksheets("BB").Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=M Columns("A:C").SpecialCells(xlCellTypeVisible).copy Worksheets("CC").Range("B1").PasteSpecial Paste:=xlPasteAll Application.CutCopyMode = False ' Worksheets("BB").Range("A1").CurrentRegion.AutoFilter End Sub 何が原因なのでしょう? また、その解消法教えていただきたく、よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- エクセルVBAでエラー、Changeの使い方が×?
エクセルVBAでBOOK1のsheet1とsheet2とsheet3があり、 sheet1とsheet2の全ての情報をsheet3にコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それをsheet1かsheet2の中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 sheet1とsheet2とsheet3に Private Sub Worksheet_Change(ByVal Target As Range) Call マクロ() End Sub を入れ、 標準モジュールに Sub マクロ() Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub をやって、sheet1かsheet2のセルを変更すると エクセルが固まってしまいます。 デバックでは最初の Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") がよくないようです。 書き方が間違っているのでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセルVBAでコピー
エクセルVBAでのコピーについての質問です。 ブック1 とブック2があります。 ブック1 のSheet1 内にマクロ含むワークシートを 新規ブックにファイル名を指定して 下記のようなプログラムでコピーしようとすると (標準モジュール1の内容) Sub newfilesave() MsgBox "デスクトップの「○○」フォルダに控え○○_日付時間.xlsxファイルを生成します。" Sheets("受付仕分リスト").Copy ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False ActiveSheet.Range("A1").Select 'マクロなしのエクセルデータとして名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 ActiveWorkbook.SaveAs _ Filename:="C:\Users\user\Desktop\○○\○○_" & Format(Now(), "yyyymmdd_hhmm"), _ FileFormat:=xlOpenXMLWorkbook End Sub Sheet1 内にマクロの内容までコピーされてしまいます。 ブック1のレイアウトや書式などはそのままに マクロ部分だけを取り除いてコピーするには どのような流れでプログラムすればいいでしょうか? よろしくお願いします。
- 締切済み
- Visual Basic
- エクセルVBA、他のファイルからのコピー
BBA初心者です aaa.xlsのマクロで aaa.xls にbbb.csvのデータを貼り付けたいのですが Sub () Windows("bbb.csv").Activate…ここのbbbってところをセル参照にしたいのです ActiveCell.Range("A1:A10").Select Selection.Copy Windows("aaa.xls").Activate ActiveSheet.Paste End Sub 1つ上のセルにbbbと入力されていればbbb.csvのデータを 1つ上のセルにcccと入力されていればccc.csvのデータを 貼り付けれるようなマクロはどう書けばいいのでしょうか よろしくお願いします
- ベストアンサー
- オフィス系ソフト
- エクセルVBA
例えば、 Range("A1").Formula = "=$B$1+$C$1" は可能なのですが、 シートが違う場合の書き方を教えてください。 A1は(AAAシート) B1とC1は(BBBシート) マクロを登録するシートはAAAシートの方です。
- ベストアンサー
- Microsoft ASP
- Excel VBAを使って他ブックのデータ抽出とコピー
VBA初心者です、よろしくお願い致します。 現在、Excel97を使用して、実績をまとめるファイルを作成しています。 このファイルのシートに、他ブック(ネットワーク上固定フォルダ固定ファイル名)のデータを抽出コピーを行いたいと思っています。 他ブックは、品名(A3)、日付(C3~AG3)(1日~31日)という列からなり、品名数の増減があります。 様々な情報を参照させていただき下記のようなコードを作成しました。 Set wb1 = Application.ActiveWorkbook 'ブックを開く Application.ScreenUpdating = False Set wb2 = Application.Workbooks.Open(dataDirJisseki & dataNameJisseki, ReadOnly:=True) 'コピーする With wb2 .Worksheets("SMT生産実績").Range("A3:A65536").Copy _ Destination:=wb1.Worksheets("work_jisseki").Range("A1") .Worksheets("SMT生産実績").Range(colTmp & "3:" & colTmp & "65535").Copy _ Destination:=wb1.Worksheets("work_jisseki").Range("B1") End With 'ブックを閉じる Set wb1 = Nothing wb2.Close Savechanges:=False Set wb2 = Nothing Application.ScreenUpdating = True 上記プログラムでも希望した動作にはなるのですが、下記について改善したくご相談させていただきました。 (1)抽出する列を他ブックから検索したい 現状では、抽出する列を自ブックのシートの"日付"セルに入力させ、その値に該当する他ブックの列名をSelect Caseを使って判断しています。 Select Case Day(Range("日付")) Case "1" colTmp = "C" : Case "31" colTmp = "AG" End Select これでは他ブックの列構成が変わってしまうと異なるデータ列を取ることになるため、日付を使って他ブックから該当列を検索するようにしたいです。 (2)他ブックのデータ数(行列数)を使ってコピーをしたい 現状では行数最大値の65536でコピーしていますが、他ブックのデータ数でコピーしたい。 以上ですが、是非お力添えをいただければと思います。 説明等不足がありましたら、そちらも指摘ください。よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
どうもありがとうございます。 accessでモジュールを書くときはいつもフォームのイベントプロシージャで書いていたので、excelを見たときすごく戸惑いました。 マクロは非常に有効なツールだと感動しています。 参考になりました。どうもありがとうございました。