• ベストアンサー

Excelのマクロを使ってのオートフィル

Excelのマクロを使ってのオートフィルについて教えて下さい。 類似の質問があったのですが、決まったセルからのものが多くわかりませんでした。 マクロはまだ始めたばかりです。 やりたいことはExcelの2つのシートに別のcsvファイルの数字を入れることです。 ExcelのSheet1のD1セルに日付を表す数字が入っています。 Sheet2と3には2行目に月の日付がずらりと並んでいます。 1列目には記録番号が入っています。 それぞれのシートにSheet1のD1セルと同じ日付の列を見つけて、 その下の行から1列目の記録番号を元に検索したcsvファイルのデータを引っ張ってきたいのです。   Sheets("Sheet1").Select Cells(3, (Sheets("Sheet2").Range("D1")).Select と最初に入れるセルを探しても違う列に飛んでしまったりします。 又、下のセルまで数式もコピーできずに止まったままです。 VBAまでは手が出せずに悩んでいます。どうか教えて下さい。よろしくお願いします。

noname#69711
noname#69711

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

ANo.2で提示したコードは一例です。 Activecellの1行上の数式をコピーしています。 そのまま使っても上手くいかないのは当然です。 >ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-17],tanto.csv!C1:C2,2,0)" ”1列目の記録番号を元に検索”ということですからActiveCellの位置によって、列の相対位置を計算しなければなりません。 ”1列目”がA列なら With ActiveCell   .FormulaR1C1 = "=VLOOKUP(RC[-" & .Column - 1 & "],tanto.csv!C1:C2,2,0)" End With で良いと思います。 .Column - 1 の 1 は、1列目の記録番号がどの列にあるかによって変わってきます。 下方にオートフィル入力するなら With ActiveCell   .Resize(3, 1).FormulaR1C1 = "=VLOOKUP(RC[-" & .Column - 1 & "],tanto.csv!C1:C2,2,0)" End With といった感じになります。 Resize(行数, 列数)です。 行数を決定しなければなりません。何か手掛かりはありますか? A列のデータ最終行から計算するなら With ActiveCell   .Resize(Cells(Rows.Count, "A").End(xlUp).row - .Cells.row + 1, 1).FormulaR1C1 = _     "=VLOOKUP(RC[-" & .Column - 1 & "],tanto.csv!C1:C2,2,0)" End With といった感じになります。

noname#69711
質問者

お礼

xls88さん、どうもありがとうございました。 不十分な説明にも関わらず細かい解説をいただき、勉強になりました。 今後もつまづきながらになると思いますので、機会がありましたら今後共どうかよろしくお願い致します。 本当にどうもありがとうございました。

noname#69711
質問者

補足

xls88さん、度々どうもありがとうございます。 記録番号からの検索というのはわかりました。 でもおっしゃる通り、最終行が日々変わっていることに気付かず行き詰りました。 下記のmitarashiさんへの補足でも入れたのですが、 ExcelのSheet2のA列にある記録番号(取引先コード)の最終行を毎日確認して決めてしまうか、 csvファイルの最終行の見つけ方があるならばその方法で行いたいと考えています。 知識がないため今思いつくのは最終行を日付と同じようにどこかのセルに数字で入力する、位なのですが・・・。 お時間のできた際に又アドバイスいただけたらうれしいです。 どうかよろしくお願い致します。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#1です。 補足していただいた内容からすると、下記の内容で良い気がしますが、#2さんへの補足&追加質問とは合致しませんので相変わらず全容が良く分かりません。 Sub test() '転記先ファイル(そこにマクロも記録)のSheet1から実行 Range("D1").Select 'オプション/全般で、R1C1参照方式にしておいて記録し、いじった Application.Goto Reference:="Sheet2!R3C" & Selection.Value Windows("CSVファイル名.csv").Activate Range("A2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy Windows("転記先ファイル名.xls").Activate ActiveSheet.Paste Link:=True Sheets("Sheet1").Select Range("D1").Select Application.Goto Reference:="Sheet3!R3C" & Selection.Value Windows("CSVファイル名.csv").Activate Range("B2").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy Windows("転記先ファイル名.xls").Activate ActiveSheet.Paste Link:=True End Sub =VLOOKUP(RC[-17],tanto.csv!C1:C2,2,0) の意味は?やはり、転記先ブックのSheet2には、A列に0001,0002,が並んでいるのでしょうか?これはヒットしないケースもあるのですか

noname#69711
質問者

お礼

mitarashiさん、どうもありがとうございました。 他力本願ではいけないと格闘した結果、最終行を見つけて動かすことができました。 今後もつまづきながらになると思いますので、機会がありましたら今後共どうかよろしくお願い致します。 本当にどうもありがとうございました。

noname#69711
質問者

補足

mitarashiさん、度々どうもありがとうございます。 元となるファイルに多少変更が入ってしまったため、 自分で実際に動かして確認するのに時間が掛かってしまいました。 説明不足なのもご指摘の通りで申し訳ありません。 >=VLOOKUP(RC[-17],tanto.csv!C1:C2,2,0) の意味は? 今は=VLOOKUP(RC[-17],tanto.csv!A2:C2,3,0)なのですが、 tanto.csvのA列の記録番号を元にデータを探しています。 Excel、csvファイルは変更が入ってしまって現在下記の内容になっています。 Sheet1 .............A.............B.............C.............D.............E ....1.......................................................................23............... E1セルに日付を表す数字が入っています。今日だったら23と入力します。 (※D1セルからE1セルに変更になってしまいました。) Sheet2 ...................A...................B...................C...................D...................E ...1........................................................................ ...2......記録番号........空欄.................. 1...................2...................3....................4~31まで このシートの説明が特に不十分でした。 1行目にはタイトルのみ。 2行目にはA2セルに「記録番号」という表示、B2セルは空欄になっていて通常非表示の状態です。 そしてC2セルから日付を表す1から31までの数字がそれぞれの列に入っています。 やりたいことはSheet1のE1セルに入った数字を見て、該当する列の3行目からcsvファイルのデータ(数字)を貼り付けたいのです。 csvファイルからVLOOKUPで探すのは記録番号でA列に入っています。 csvファイルのデータの配置も少し変わりました。 .............A................B................C................D................E .1.....タイトル行 .2.....タイトル行 .3.....タイトル行 .4.....記録番号.....項目1.....項目2.....項目3.....項目4 .5.......0001..............381..........475..........398..........208... .6.......0002..............275..........572..........279..........349... .7.......0003..............579..........256..........167..........648... .8.......0004..............385..........249..........876..........387... .9.......0005..............779..........469..........237..........279... 最初は該当する列をまず見つける段階でズレが生じていました。 今は該当する列にきちんと数字を入れることができるようになったのですが、 毎日必ずしもデータの行数が同じでないことを知りました。 記録番号は厳密には取引先コードで、外部にわかりにくいように記録番号という表示にしてあります。 これは重複はありません。 記録番号(取引先コード)は日々増減し、増えた分はExcelのSheet2でも最終行に追加し、 減った分は月が替わった際に削除するかとりあえず0という数字を入れていくことになっています。 実際にはマクロの中で「#N/A」を「0」に置き換える動作を行って記録し、実行しています。 今行き詰ってしまっているのは、最終行をどうしたらよいかということです。 ExcelのSheet2のA列にある記録番号(取引先コード)の最終行を見るのが一番確実だとは思うのですが、 Sheet2の最終行の下には合計や他の計算式が入った行が全部で5行分入っています。 csvファイルの最終行の見つけ方があれば知りたいです。 上記csvファイルの項目1と項目2も2つのcsvファイルを元に作成したもので、そこでもマクロを使っているからです。 まだまだ説明不足かも知れないため恐縮ですが、もしご迷惑でなければ又アドバイスいただけたらうれしいです。 どうかよろしくお願い致します。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>それぞれのシートにSheet1のD1セルと同じ日付の列を見つけて、 >その下の行から1列目の記録番号を元に検索したcsvファイルのデータを引っ張ってきたいのです。 > >Sheets("Sheet1").Select >Cells(3, (Sheets("Sheet2").Range("D1")).Select Cellsプロパティに対してシート名が省略されている場合 ActiveSheet.Cells(3, (Sheets("Sheet2").Range("D1")).Select という意味になります。 直前に Sheets("Sheet1").Select しているので Sheets("Sheet1").Cells(3, (Sheets("Sheet2").Range("D1")).Select ということになります。 やりたいことは Sheets("Sheet2").Select Cells(3, Sheets("Sheet1").Range("D1")).Select あるいは Sheets("Sheet1").Select Sheets("Sheet2").Cells(3, Sheets("Sheet1").Range("D1")).Select ではないでしょうか? Cells(行, 列)ですから Sheets("Sheet1").Range("D1")の値が、1とか2のような整数ならOKです。 9/20 のように、いわゆる日付データですとエラーになります。 Sheets("Sheet1").Range("D1") の値が、1とした場合 Sheets("Sheet2").Select Cells(3, Sheets("Sheet1").Range("D1")).Select は Sheets("Sheet2").Cells(3, 1).Select ということですから Sheet2のセルA3がSelectされます。 >1列目には記録番号が入っています。 ということですから、1列ずれることになります。 対処するには Cells(3, Sheets("Sheet1").Range("D1") + 1).Select というように、+1補正すれば Sheets("Sheet2").Cells(3, 2).Select となり Sheet2のセルB3がSelectされます。 >下のセルまで数式もコピーできずに止まったままです。 元の数式はどこにありますか? そして、どこまでコピーするのですか? 例えば Sheets("Sheet2").Select Cells(2, Sheets("Sheet1").Range("D1")).Select Selection.FormulaR1C1 = Selection.Offset(-1).FormulaR1C1 セル Cells(2, Sheets("Sheet1").Range("D1")) に、 1行上(Selection.Offset(-1, 0))のセルの数式(FormulaR1C1)がコピーされます。

noname#69711
質問者

補足

xls88さん、ありがとうございます。 Sheet2の思っていたセルをきちんと見つけて入るようになりました。 数式はcsvファイルを参照する内容なのですが、 ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-17],tanto.csv!C1:C2,2,0)" Selection.FormulaR1C1 = Selection.Offset(-1).FormulaR1C1を その下に入れると日付の数字をコピーしてしまいます。 VLOOKUP関数は使えないのでしょうか。 この作業をしている時にはこの参照をさせるために、tanto.csvファイルは開いた状態になっています。 あまりにご丁寧な内容だったので引き続き質問するのも恐縮なのですが、 できましたらどうかよろしくお願い致します。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

分からない事が多すぎて、回答できません。 Sheet1 .............A...............B...............C..................D ..1......................................................2008/9/18 は良いとして、 質問通りなら、 Sheet2 ...................A.......................B.......................C......................D......................E.......................F ..1 ..2.............0001.....2008/9/16.....2008/9/17.....2008/9/18.....2008/9/19....2008/9/20 ですが、実際は ...................A.......................B.......................C......................D......................E.......................F ..1.............0001................0002.................0003.................0004...............0005.................0006 ..2...2008/9/16.....2008/9/17.....2008/9/18.....2008/9/19....2008/9/20.....2008/9/21 こうなっているのでしょうか? 1)Sheet1!D1の日付を、Sheet2! 2行目で検索 2)上記の例では、見つかった行のSheet2!C2の値0003に対応する値を、ひとつの決まったCSVファイルから引っ張ってきて、Sheet2!C3以下に貼り付ける? その場合のCSVのデータの配置はどうなっているの? オートフィルはどこで出番がある? と、十分な情報をいただけないと、回答できません。

noname#69711
質問者

補足

mitarashiさん、ありがとうございます。 説明不足で申し訳ありません。 Sheet1 .............A.............B.............C.............D.............E ....1....................................................19............... 日付は数字が入っています。形式は数値になっています。 Sheet2 .............A.............B.............C.............D.............E ...1........................................................................ ...2.........1.............2.............3..............4.............5....~31まで Sheet1のD1セルだけは毎日変更することになっています。 今日だったら19と入力します。 csvファイルはその日1日分のデータが入っているので、 Sheet2の19の数字が入った列に縦にデータを貼り付けたいのです。 csvファイルのデータの配置は .............A.............B.............C.............D.............E .1.....項目1.....項目2.....項目3.....項目4.....項目5 .2.......0001........381..........475..........398..........208... .3.......0002........275..........572..........279..........349... .4.......0003........579..........256..........167..........648... .5.......0004........385..........249..........876..........387... .6.......0005........779..........469..........237..........279... Sheet2には項目1のデータ、Sheet3には項目2のデータを貼り付けることになっています。 オートフィルは該当する日付の数値の列を見つけた後、 csvファイルからデータを引っ張ってくる際に必要な数式を3行目に入力します。 それを下の方までオートフィルで入力できたらと考えています。 但しデータの数は日によって多少増減するため、最終行を毎日Sheet2とSheet3で足りなくならないようにしています。 マクロでは一度作業をした動作を実行してくれるので簡単に出来そうなのですが、 この最終行についてはVBAか何か他の方法を使わないとダメなのかなと悩んでいます。 不十分な説明にも関わらずご質問いただき、ありがとうございます。 どうかよろしくお願い致します。

関連するQ&A

  • 至急お願いします。エクセルのマクロに関してです。

    かなり至急です><エクセル2010のマクロの質問です。 2つ質問があります。 1つ目です。 以下の一連の作業を1つのマクロで行いたいのですが、どうしたらいいでしょうか? 現在は、シート1にデータがあります。 (1)選択した3列を、B~D列に移動する (2)B列に含まれるセルのうち、0(空白)でないセル数分だけシートを追加する。 (たとえば、シート1のB14~B18に数字がはいっていたら、シートを5枚追加するという感じです。) (3)B列に含まれるセルのうち、0(空白)でないセル数分に対し、2行ずつ各シートの3・4行目にコピーする。 (たとえば、シート1のB14~B18に数字がはいっていたら、シート2の3・4行にシート1の14・15行のコピーを貼り付け、シート3の3・4行にシート1の15・16行のコピーを貼り付け、シート4の3・4行にシート1の16・17行のコピーの貼り付ける・・・という感じです。) 現在は (1)Sub () Selection.Cut ActiveCell.Columns("A:C").EntireColumn.Select Selection.Cut Columns("B:B").EntireColumn.Select Selection.Insert Shift:=xlToRight End Sub (2) Sub Macro() Dim n As Long For n = 14 To 18 ' Sheets.Add Next End Sub (3) Sub Macro() Dim n As Long For n = 14 To 18 ' Sheets("Sheet1").Rows(n & ":" & n + 1).Copy _ Sheets("Sheet" & n - 252).Range("A3") Next End Sub と別々のマクロに分けてます。 また(2)(3)でみられる For n = 14 To 18 ' の部分の数字は手動でいれてますが、かなり時間をくってしまうので・・・。 2つ目です。 複数ブックに同じ動作をするエクセルのマクロが知りたいです。 現在100ほどブック(Book1~100)を開いていて、100のブックすべてのSheet1のA1のセルに「1」と入れたいのですが、 そのようなマクロはどうくんだらよろしいでしょうか。 ちなみにExcel2007です。 困っているので、お願いします。

  • Excel 2007 マクロ 表の貼り付け

    Excel 2007 マクロ 表の貼り付け Excel 2007 マクロ 表の貼り付けについて教えてください。 <Sheet1>の表にあるA2からD4を <Sheet2>に値貼り付けをします。 表は画像を添付します。 マクロの記録では下記内容になります。 Sub Macro1() ' ' Macro1 Macro ' ' Range("A2:D4").Select Selection.Copy Sheets("Sheet2").Select Range("A2:D4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub <Sheet1>のA列の行の増減にかかわらず、<Sheet2>に貼り付けることができるように するにはどのようにマクロを修正すればよろしいでしょうか。

  • エクセルマクロでオートフィルタを貼り付け。VBA

    お世話になっております。 エクセルのマクロを作成したのですが、上手く機能いたしません。 オートフィルタで条件に一致するものが現在表示されている 「CSV元データをここに貼り付ける」という名前のシートが ございます。 これをシートを全選択し、そのまま 「加工1」という名前のシートに貼り付ける。 といったマクロを作成したのですが、加工1には何も貼り付けられていないようです。 下記にマクロのプログラムを記載しますので、どこを訂正すればいいのかをお教えいただければ ありがたいです。 無知で申し訳ございませんが、何卒よろしく御願いいたします。 当方が今したいのは、マクロ2なのですが、マクロ2を見ようとするとマクロ1も表示されます。 なぜ、マクロ1もでてくるのかわかりませんが、よろしく御願いいたします。 Sub マクロ1() ' ' マクロ1 Macro ' マクロ記録日 : 2011/10/31 ユーザー名 : ' ' Columns("A:D").Select Selection.Delete Shift:=xlToLeft Columns("D:D").Select Sheets("読込データ(加工1)").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Sheets("読込データ(ORG)").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 11 Sheets("csv元データをここに貼り付ける").Select Columns("B:D").Select Selection.Delete Shift:=xlToLeft Columns("I:P").Select Selection.Delete Shift:=xlToLeft Range("I19").Select Sheets("csv元データをここに貼り付ける").Select Rows("2:2").Select Selection.AutoFilter Selection.AutoFilter Field:=9, Criteria1:="=2", Operator:=xlAnd End Sub Sub マクロ2() ' ' マクロ2 Macro ' マクロ記録日 : 2011/10/31 ユーザー名 : ' ' Cells.Select Selection.Copy Sheets("加工1").Select Range("G12").Select End Sub

  • エクセルのマクロの手直し

    お世話になります。 以下はエクセルの入力規則(リスト)をマクロに記録したものです。(マクロ名はリスト) 下の例では、C列の33~44行にリストの項目が入力されています。 この $C$33:$C$44 の範囲を、C33~C列のうちデータが入力されている一番最後の行(行番号が最大) までとするにはどうすればいいのでしょうか。(先頭のC33は不変) ちなみにこのリストは数字だけでなく文字も含めて考えます。 いったん一番下の行番号を、影響のない他のセルに表示させてから、マクロに記録しても可。 Excel2000です。 よろしくお願いします。 Sub リスト() ' ' リスト Macro ' マクロ記録日 : 2002/7/23 ユーザー名 : ' ' Range("D51:D70").Select ActiveWindow.SmallScroll Down:=-9 With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$C$33:$C$44" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With Range("C45").Select End Sub

  • EXCELのマクロがわかりません・・・

    現在、A列にデータが並んでいるのですが、 これを7つ区切り(例:A1~A7、A15~A21)にして、 別シートに用意した表に行列を入れ替えて、 貼り付けるマクロを作っているのですが、 なにぶんVBは素人ですので、よくわかりません。 今作ろうとしているマクロは、 「元データ」セルのA1からA7までをコピーして、 「作成データ」セルのB2を起点として、 コピーした内容の行列入れ替えを行い貼り付け、 以後、「元データ」のコピー範囲を7つづつ 下にずらし、「作成データ」の貼り付け起点を 1つづつ下にずらして、「元データ」のA列の 最後までくりかえすものです。 必ず「Range」文で引っかかってしまうのですが、 何か構文的におかしいでしょうか? かなり急ぎですので、 わかる方、よろしくお願いしますっ!! 下に、作成したマクロを貼り付けます。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2005/12/5 ユーザー名 : *** Worksheets("元データ").Activate 開始行 = -6 終了行 = 0 ペースト行 = 0 Do 開始行 = 開始行 + 7 終了行 = 終了行 + 7 ペースト行 = ペースト行 + 1 開始セル番号 = "A" & 開始行 終了セル番号 = "A" & 終了行 ペーストセル番号 = "B" & ペースト行 Range("開始セル番号:終了セル番号").Select Selection.Copy Sheets("作成データ").Select Range(ペーストセル番号).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Loop End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • エクセル2007マクロ シート間のセルコピー

    [Sheet1]にあるデータを[Sheet2]にコピーするマクロボタンを[Sheet2]に作りたいのですが、マクロがよく分からないので、「マクロの記録」で作成してみました。 Sub siken() ' ' siken Macro ' ' Sheets("Sheet1").Select Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("A1").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B3").Select ActiveSheet.Paste Sheets("Sheet1").Select Range("B6:D6").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B6").Select ActiveSheet.Paste End Sub (実際はもっと多くのセルをコピーします) マクロを実行すると、ちゃんとコピーできるのですが、セルをコピーする都度[Sheet1]と[Sheet2]が交互に表示されます。 コピー元の[Sheet1]を表示させずにマクロを実行させるにはどのようにしたらよいのでしょうか? よろしくお願いします。

専門家に質問してみよう