ExcelのVBAでデータを別シートに表示させる方法

このQ&Aのポイント
  • ExcelのVBAを使用して、特定の条件に基づいてデータを別シートに表示する方法を学びたいです。
  • VB初心者ですが、データが膨大なために変数を使用する必要があると思います。どのようにすればうまく実装できるでしょうか?
  • 現在は「あ」の条件でデータをフィルタリングし、別シートに表示していますが、全てのデータを表示するためにはどのように修正すればよいでしょうか?
回答を見る
  • ベストアンサー

ExcelのVBAでできますか?

こんにちは。 項目1 項目2 あ a1 あ a2 あ a3 あ a4 い b1 い b2 い b3 い b4 い b5 い b6 い b7 というデータがあり、これを別シートに 項目1 項目2 項目3 項目4 項目5 項目6 項目7 項目8 あ a1 a2 a3 a4 い b1 b2 b3 b4 b5 b6 b7 と表示させたいです。 が、VB初心者なので「あ」のところまでしかできませんでした。 実際のデータは「い」から下もずーっとあるので変数などを使わなくてはいけないのでしょうが、よくわかりません。 どうしたらうまくいくでしょうか? ここまで自分でやってみました。 Range("A2").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ" Range("A2").Select Selection.Copy Sheets.Add ActiveSheet.Paste Sheets("Sheet1").Select Range("B2:B15").Select Application.CutCopyMode = False Selection.Copy Sheets(1).Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True

  • lehua
  • お礼率90% (118/130)

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.7

こんにちは。Wendy02さん。 #3...というと私のコードですか? これはスピード度外視してますから、きっと大量データには向かないと思います。 実際に10,000件ですと40秒くらいかかるのではないかしらん? Wendy02さんのコードのほうが速いですし、 値だけでよければ#5のimogasiさんのコードがおススめです>質問者のlehuaさんへ。

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

#2のWendy02です。 #その方法は、否定はしませんが、ランクが上がります。よほど、大量でないと、この方法はあまり使いませんね。 この発言は、無視してください。私のコードと#3さんのコードを比較すると、今回の場合は、単に二つだけを比較すると、#3のコードのほうが速いし、ご質問者さんの書いている内容にも則しています。内容的にも、私のほうがややこしいです。(失礼しました。) だいたい、10,000件のデータぐらいにすると、はっきりと違いが分かります。

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

Sub test05() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet3") Set sh2 = Worksheets("Sheet4") '--初期設定 k = 1 'Sheet2のスタート行 j = 2 'Sheet2のスタ-ト列B列 sh2.Cells(k, "A") = sh1.Cells(1, "A") sh2.Cells(k, j) = sh1.Cells(1, "B") '--- For i = 2 To sh1.Range("A65536").End(xlUp).Row If sh1.Cells(i, "A") = sh1.Cells(i - 1, "A") Then '直前行と比較 j = j + 1 Else k = k + 1 '下の行に行く sh2.Cells(k, "A") = sh1.Cells(i, "A") j = 2 'B列に復帰 End If sh2.Cells(k, j) = sh1.Cells(i, "B") Next i End Sub 例データ Sheet3 A1:B14 あ a1 あ a2 あ a3 あ a4 い b1 い b2 い b3 い b4 い b5 い b6 い b7 う c1 う c2 う c3 結果 Sheet4 A1:H3 あ a1 a2 a3 a4 い b1 b2 b3 b4 b5 b6 b7 う c1 c2 c3

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

回答出てるようですが一応作ったので、コピー元シート選択した状態で実行してください。 Sub marabikae() Range("A1").Select motosheet = ActiveSheet.Name Do mozi = ActiveCell.Value   ‛元データの文字収納 kaisi = ActiveCell.Offset(0, 1).Address   ’コピー元データの先頭 Do                   ’文字が変わるまでループ ActiveCell.Offset(1, 0).Select     ’してます Loop Until ActiveCell.Value <> mozi   ’ syuuten = ActiveCell.Offset(-1, 1).Address ’データ終点 Range(kaisi, syuuten).Copy   ’コピー範囲選択 Sheets("Sheet2").Select     ’範囲を行列入れ替えて貼り付け Range("B65535").End(xlUp).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True ’文字データ貼り付け Range("A65535").End(xlUp).Offset(1, 0).Value = mozi  Sheets(motosheet).Select Loop Until ActiveCell.Value = "" ’データがなくなるまで上記繰り返し Sheets("Sheet2").Select      ’コピー先の体裁の変更 Rows("1:1").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End Sub

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.3

こんにちは。 元コードのAutoFilterを使うセンでいくと、以下のような感じでしょうか。 Sub sample()   Dim ws As Worksheet '新規出力Sheet用   Dim r As Range 'データ範囲   Dim i As Long 'Loopカウンタ   '新規Sheet追加。変数wsに格納   Set ws = Sheets.Add   'データ範囲を変数rに格納【■■■実際のSheet名に変更必要■■■】   Set r = Sheets("sheet1").Range("A1").CurrentRegion   '一般機能でいう[フィルタオプション]でA列の値を重複せずにwsへ抜き出す。   r.Columns("A").AdvancedFilter Action:=xlFilterCopy, _                  CopyToRange:=ws.Range("A1"), _                  Unique:=True   '抜き出した値を順にLoop   For i = 2 To ws.Range("A65536").End(xlUp).Row     'AutoFilterをかけて、B列の見出し以外のデータを[コピー][行列入替][貼り付け]     r.AutoFilter Field:=1, Criteria1:=ws.Cells(i, 1).Value     r.Columns("B").Resize(r.Rows.Count - 1).Offset(1).Copy     ws.Cells(i, 2).PasteSpecial Paste:=xlAll, Transpose:=True   Next i   r.AutoFilter   '新規Sheetの列数分、見出し項目をセット。(元データA1が"項目1"前提)   With ws.Range("A1")     .AutoFill Destination:=.Resize(1, .CurrentRegion.Columns.Count)   End With      'SetしたObject型変数を破棄   Set r = Nothing   Set ws = Nothing End Sub

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >Selection.AutoFilter Field:=1, Criteria1:="あ" オートフィルタを使うと難しくなります。オートフィルタの場合は、一旦、Criteria 用のデータを抽出しなければならなくなるからです。その方法は、否定はしませんが、ランクが上がります。よほど、大量でないと、この方法はあまり使いませんね。 通常は、A列が、「並べ替え」が済んだものとして、進めていくのが簡単です。 だから、A列のデータもB列のデータも空白行がないということが前提です。 なるべく、元の雰囲気を壊さずに作ってみました。 Sub TestMacro2() Dim i As Long Dim NewSheet As Worksheet Dim buf As String Dim Start As Long With ActiveSheet Set NewSheet = Worksheets.Add '新しいシート Application.ScreenUpdating = False For i = 2 To .Range("A65536").End(xlUp).Row  If buf = "" Then   buf = .Cells(i, 1).Value '先頭文字を確保   Start = i  End If  If .Cells(i + 1, 1).Value <> buf Then '次のセルと比較     .Range(.Cells(Start, 2), .Cells(i, 2)).Copy     NewSheet.Range("A65536").End(xlUp).Offset(1).Value = buf     NewSheet.Range("B65536").End(xlUp).Offset(1).PasteSpecial _     Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True     Start = i + 1 '先頭データの更新     buf = ""  End If   Next i Application.CutCopyMode = False '項目数の代入 With NewSheet.Range("A1").CurrentRegion.Rows(1)   .FormulaLocal = "=""項目""" & "&COLUMN()"   .Cells.Value = .Cells.Value End With Application.ScreenUpdating = True Set NewSheet = Nothing End With End Sub

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

  • Nigun
  • ベストアンサー率22% (200/893)
回答No.1

すみません。補足を要求します。 1.1列目は"あ","い"といった文字列なのか? 2.1列目の並び順は"あ","い","あ"・・・といった用に順番がバラバラになる事はないか? 以上2点を教えて下さい。

lehua
質問者

お礼

遅くなりまして申し訳ありません。解決しました。ありがとうございました。

lehua
質問者

補足

補足ありがとうございます。 1.文字列ではありません。表示形式は標準です。 2.順番がバラバラになることはありません。 どうぞよろしくお願いします。

関連するQ&A

  • Excelでマクロを繰り返したい。

    Excelでマクロを記録したら以下のようになりました このマクロを以下の条件で繰り返したいのですが。 Sub Macro1() '------------- '----------------------- ' Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=5*", Operator:=xlAnd, _ Criteria2:="<>5@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=6*", Operator:=xlAnd, _ Criteria2:="<>6@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Selection.AutoFilter Field:=4, Criteria1:="=7*", Operator:=xlAnd, _ Criteria2:="<>7@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("A103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet1").Select Range("A1").Select Selection.AutoFilter Field:=4, Criteria1:="=8*", Operator:=xlAnd, _ Criteria2:="<>8@*" Range("A3:A302").Select Selection.Copy Sheets("Sheet2").Select Range("B103").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 条件= Field:は4~35位まで変動します 一連の動作をコピーして手作業で数字を変えてみたのですが プロージャが大きすぎてエラーになってしまいます。 何か良い方法は無いでしょうか?。

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • エクセルマクロVBAについて

    エクセルマクロVBAについて、こんなこと出来ますか? ■A列からAS列の1行目にヘッダー情報をもつデータベース ■A列に担当者名 ■A列にオートフィルタをかけて各担当ごとにデータを抽出したものを別シートに貼り付けて自動印刷したい ■担当者は都度変わるので、Criteria1:="xxx"というようには直接書けない(担当名を自動で抽出したい) ■担当者の数も都度変わる ■補足 一行のデータを特定の雛形に転記する必要があるので別シートに出したいです ちなみに、アナログで記録したコードは以下です。 Sub test1() Sheets("データ抽出シート").Select ActiveSheet.Range("$A$1:$AS$300").AutoFilter Field:=1, Criteria1:="山田" Range("$A$1:$AS$300").Select Selection.Copy Sheets("抽出データ貼付シート").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("データ抽出シート").Select ActiveSheet.Range("$A$1:$AS$300").AutoFilter Field:=1, Criteria1:="斉藤" Range("$A$1:$AS$300").Select Selection.Copy Sheets("抽出データ貼付シート").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("データ抽出シート").Select ActiveSheet.Range("$A$1:$AS$300").AutoFilter Field:=1, Criteria1:="田中" Range("$A$1:$AS$300").Select Selection.Copy Sheets("抽出データ貼付シート").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub これ、担当者の抽出を自動でなんとかなりませんか?

  • Excel 繰り返しマクロ

    下記のようなマクロを使ってn個あるシートの内容を「集計」シートにコピーさせるようにしました。 (自動マクロとの組合せなので、スマートではないかもしれませんが) でも、これだと「集計」シートもコピー作業を行ってしまうので、 「集計」シートはコピー作業をしないように除外したいのですが、どうしたら良いのでしょう? 実際にはシート数は30程度、コピペ項目は1シートあたり30項目程度あります。 よろしくお願いします。 ------------------------- Sub テスト2() ' For i = 1 To Worksheets.Count '案件番号等コピー ' Sheets(i).Select Range("D3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '案件名 Sheets(i).Select Range("F3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '国名 Sheets(i).Select Range("E3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("C4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '選択セルの解放 Application.CutCopyMode = False '行挿入 ' Sheets("集計").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Next i End Sub

  • エクセルVBA での繰り返し処理について

    エクセルVBA での繰り返し処理について 以下の作業を20回繰り返そうとしています(別シートから持ってきた値を「行列を入れ替えて」貼り付け)    Sheets("初期設定").Select Range("A6:C6").Select Selection.Copy Sheets(TS).Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True   「初期設定」シートの方は1行ずつ並んでいるので、「2回目」の「2行目」は   「 Range("A7:C7").Select」になり、   「TS」シートの20行後に貼り付けたいので、「2回目」の「5行目」は   「Range("B24").Select」 になります   これを、for ~ next を使い、以下のようにしてみましたが、上手くいきません。    For j = 6 To 26 For k = 4 To 384 Step 20 Sheets("初期設定").Select Range(Cells(j, 1), Cells(j, 3)).Select Selection.Copy Sheets(TS).Select Cells(k, 2).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Next k Next j  1分程度ループし続けた後、「初期設定」シートの最終行だけが貼り付けられてしまいました。 どこをどのように直せばいいのかお教えください。 よろしくお願いいたします。

  • エクセル VBA 繰り返し処理を 簡潔にしたいのでお願いします。

    初心者です。繰り返し処理のシート名操作が分かりません。 上手く説明できないのですが、シートの名前が数字の1~20で 特定のセルを参照してテーブルにします。 現在、とても単純なコードを繰り返しています。 すっきりとさせるには、どのように記載するとよいのか 教えてください。 以下の処理を20回ほど繰り返します。  'シート1の特定セルをコピーします Sheets("1").Range("c3").Copy Range("A3").PasteSpecial Sheets("1").Range("c4").Copy Range("B3").PasteSpecial Sheets("1").Range("o2").Copy Range("C3").PasteSpecial Sheets("1").Range("o3").Copy Range("D3").PasteSpecial Sheets("1").Range("Q6:Q42").Copy Sheets("集計").Select ActiveWindow.ScrollColumn = 14 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("E3").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True 'シート2の特定セルをコピーします Sheets("2").Range("c3").Copy Range("A4").PasteSpecial Sheets("2").Range("c4").Copy Range("B4").PasteSpecial Sheets("2").Range("o2").Copy Range("c4").PasteSpecial Sheets("2").Range("o3").Copy Range("d4").PasteSpecial Sheets("2").Range("Q6:Q42").Copy Sheets("集計").Select ActiveWindow.ScrollColumn = 14 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("E4").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Sheets("3").Range("c3").Copy Range("A5").PasteSpecial Sheets("3").Range("c4").Copy Range("B5").PasteSpecial Sheets("3").Range("o2").Copy Range("c5").PasteSpecial Sheets("3").Range("o3").Copy Range("d5").PasteSpecial Sheets("3").Range("Q6:Q42").Copy Sheets("集計").Select ActiveWindow.ScrollColumn = 14 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("E5").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • 抽出してコピペ 検索すべき文字が存在しない場合は?

    エクセルのマクロを使って、売上帳を作成しています。 下のようなコードで、F2に顧客番号を入れると、売上帳シート内から選んだ顧客のみの売上明細が個別売上帳シートに移るように作っています。 そこで問題なのですが、売上帳シート内に存在しない顧客番号(取引がなかった顧客)を抽出しようとすると、全明細がそっくり抽出されてしまいます。 私としては、その場合は抽出すべきものがないとして、個別売上帳シートは空欄にしてしまいたいのですが、どうすればよいでしょう? 教えてください。 Sub 顧客抽出コピペ() Sheets("売上帳").Select Range("B6").AutoFilter Field:=2, Criteria1:=Range("F2").Value '2つ目のフィルターに検索文字 Range("B5:B2005").Select Selection.Copy Sheets("個別売上帳").Select Range("B5").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Sheets("売上帳").Select Range("E5:J2005").Select Selection.Copy Sheets("個別売上帳").Select Range("C5").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub

  • マクロの記録を書きかえる

    下記の構文を可能な限り短くして書きたいのですが、 どのように省略出来るのかがわかりません。 <シート1のB列のデータの入力されているセルまでコピーし、シート2のA2から値で貼付ける> Range(\"B2\").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets(\"Sheet1\").Select Range(\"A2\").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ご指導宜しくお願い致します。

専門家に質問してみよう