Excel VBA オートフィルの範囲指定

このQ&Aのポイント
  • Excel VBAでセルに関数を入れて最下行までコピーする方法を知りたいです。
  • VBA初心者ですが、オートフィルの範囲指定がうまくできず困っています。
  • WindowsXP Excel2003を使用しています。お手数ですが、教えていただけますと幸いです。
回答を見る
  • ベストアンサー

Excel VBA オートフィルの範囲指定

Excel VBA で関数を入れたセルを最下行までコピー させたいのですが、範囲の指定がうまくできません。ごちゃごちゃ書きすぎて、よくわからなくなってしまいました。 実行してみたら、オートフィルのところでデバッグが出ました。 VBAはまだまだ初心者レベルです・・・ どこをどう直せばきちんと処理されるのか、どなたかお知恵をお貸しください。 (それと初めの定義は、Rangeで合ってるのでしょうか?) Sub sample() Dim MyCell1 As Range Dim MyCell2 As Range Dim MyCell3 As Range Dim MyCell4 As Range Dim MyCell5 As Range Set MyCell1 = Cells(5, Range("4:4").Find(what:="○○", searchorder:=xlByColumns).Offset(1, 1).Column) Set MyCell2 = Cells(5, MyCell1.Offset(0, 2).Column) MyCell1.Select Selection.Formula = "=$A5-" & MyCell2.Address(False, True) Set MyCell3 = Cells(5, MyCell1.Offset(0, -1).Column) Set MyCell4 = Cells(5, Cells(5, Columns.Count).End(xlToLeft).Column) Set MyCell5 = MyCell1.Offset(0, 1) MyCell5.Select Selection.Formula = "=" & MyCell3.Address(False, True) & "-" & MyCell4.Address(False, True) Range(MyCell1, Cells(5, MyCell1.Offset(0, 1).Column)).Select Selection.AutoFill Destination:=Cells(Cells(5, MyCell1.Column), Cells(Cells(Rows.Count, 1).End(xlUp).Row, MyCell5.Column)), Type:=xlFillCopy End Sub ********************* 下のような表に関数を入力して最下行までコピーさせたいです。  | A | B | C | D | E | F | G | H | I | J | K | L | -------------------------------------------------------------------------- 4 | code | name | 7/1 | 7/2 | ○○ |    |    | code|name| 7/1 | 7/2| ○○ | 5 |10000|aaaaaa| 15  | 20 | 35  |     |    |10001|bbbbbb| 13 | 25 | 38 |                           ((                            )) F5に "=$A5-$H5" と数式を入れてcodeを比較し、G5に "=$E5-$I5"と入れて数量を比較する。 F列とG列の入力されている最下行まで数式をコピーする。 ※毎月日数が変わり、商品数も変わるので、A列・B列・4行目以外は全て可変。 WindowsXP Excel2003 です。 よろしくお願いいたします。

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

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

AutoFillのDestinationの処を下記に訂正すれば通ります。 Destination:=Range(Cells(5, MyCell1.Column), Cells(Cells(Rows.Count, 1).End(xlUp).Row, MyCell5.Column)) こんな風に纏めることもできます。 (例1) Dim MyCell1 As Range Dim MyCell2 As Range Dim MyCell3 As Range Dim MyCell4 As Range Dim MyCell5 As Range Set MyCell1 = Range("4:4").Find(what:="○○", searchorder:=xlByColumns).Offset(1, 1) Set MyCell2 = MyCell1.Offset(, 2) MyCell1.Formula = "=$A5-" & MyCell2.Address(False, True) Set MyCell3 = MyCell1.Offset(, -1) Set MyCell4 = Cells(5, Columns.Count).End(xlToLeft) Set MyCell5 = MyCell1.Offset(, 1) MyCell5.Formula = "=" & MyCell3.Address(0, 1) & "-" & MyCell4.Address(0, 1) Range(MyCell1, MyCell5).AutoFill _ Range(MyCell1, Cells(Cells(Rows.Count, 1).End(xlUp).Row, MyCell5.Column)), xlFillCopy (例2) Dim MyCell1 As Range Dim MyCell2 As Range Dim MyCell3 As Range Dim MyCell4 As Range Dim MyCell5 As Range Dim MyRow As Long MyRow = Cells(Rows.Count, 1).End(xlUp).Row Set MyCell1 = Range("4:4").Find(what:="○○", searchorder:=xlByColumns).Offset(1, 1) Set MyCell2 = MyCell1.Offset(, 2) Range(MyCell1, Cells(MyRow, MyCell1.Column)).Formula = "=$A5-" & MyCell2.Address(0, 1) Set MyCell3 = MyCell1.Offset(, -1) Set MyCell4 = Cells(5, Columns.Count).End(xlToLeft) Set MyCell5 = MyCell1.Offset(, 1) Range(MyCell5, Cells(MyRow, MyCell5.Column)).Formula = "=" & MyCell3.Address(0, 1) & "-" & MyCell4.Address(0, 1)

lycheewine
質問者

お礼

ご回答ありがとうございます! 範囲指定はRangeじゃないとダメだったんですね。 早速、修正して実行してみたらできました。 でも自分のより、例に書いて頂いた方が処理が早かったので、そちらを使わせて頂きます。

関連するQ&A

  • EXCEL VBA 早く処理をする

    よろしくお願いします 下の構文を標準モジュールに書き込み、callで実行しているのですが 処理に時間がかかります。 処理を早くする方法と構文の簡素化のご教示をお願いします。 Application.ScreenUpdating = False For i = 1 To 12 With Worksheets(i) .Select LastRow = .Range("A150").End(xlUp).Row + 1 .Range("A8:G" & LastRow).Sort Key1:=Range("A8"), order1:=xlAscending .Range("G8:G" & LastRow - 1).Formula = "=G7+E8-F8" LastRow = .Range("A150").End(xlUp).Row + 1 .Range("A" & LastRow).Select Dim EndRow As Long EndRow = .Range("A" & Rows.Count).End(xlUp).Row Cells(Rows.Count, 1).End(xlUp).Offset(1, 3) = .Name & "合計" Cells(Rows.Count, 1).End(xlUp).Offset(1, 4) = Application.WorksheetFunction.Sum(Range("E7:E" & EndRow)) Cells(Rows.Count, 1).End(xlUp).Offset(1, 5) = Application.WorksheetFunction.Sum(Range("F7:F" & EndRow)) Cells(Rows.Count, 1).End(xlUp).Offset(2, 3) = "前月繰越" Cells(Rows.Count, 1).End(xlUp).Offset(2, 4) = .Range("G7") Cells(Rows.Count, 1).End(xlUp).Offset(2, 5) = "" Cells(Rows.Count, 1).End(xlUp).Offset(3, 4) = "" Cells(Rows.Count, 1).End(xlUp).Offset(3, 3) = "次月繰越" Cells(Rows.Count, 1).End(xlUp).Offset(4, 3) = "合計" Cells(Rows.Count, 1).End(xlUp).Offset(3, 5) = Cells(Rows.Count, 1).End(xlUp).Offset(2, 4) + Cells(Rows.Count, 1).End(xlUp).Offset(1, 4) - Cells(Rows.Count, 1).End(xlUp).Offset(1, 5) Cells(Rows.Count, 1).End(xlUp).Offset(4, 4) = Cells(Rows.Count, 1).End(xlUp).Offset(2, 4) + Cells(Rows.Count, 1).End(xlUp).Offset(1, 4) Cells(Rows.Count, 1).End(xlUp).Offset(4, 5) = Cells(Rows.Count, 1).End(xlUp).Offset(3, 5) + Cells(Rows.Count, 1).End(xlUp).Offset(1, 5) Cells(Rows.Count, 1).End(xlUp).Offset(1, 6) = "" Cells(Rows.Count, 1).End(xlUp).Offset(2, 6) = "" Cells(Rows.Count, 1).End(xlUp).Offset(3, 6) = "" Cells(Rows.Count, 1).End(xlUp).Offset(4, 6) = Cells(Rows.Count, 1).End(xlUp).Offset(0, 6) .Range("C7").End(xlDown).Select Selection.Offset(4, 2).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(4, 2).Borders(xlEdgeBottom).LineStyle = xlDouble Selection.Offset(4, 3).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(4, 3).Borders(xlEdgeBottom).LineStyle = xlDouble Selection.Offset(4, 4).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(4, 4).Borders(xlEdgeBottom).LineStyle = xlDouble Selection.Offset(0, 2).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(0, 2).Borders(xlEdgeBottom).LineStyle = xlContinuous Selection.Offset(0, 2).Borders(xlEdgeBottom).Weight = xlThin Selection.Offset(0, 3).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(0, 3).Borders(xlEdgeBottom).LineStyle = xlContinuous Selection.Offset(0, 3).Borders(xlEdgeBottom).Weight = xlThin Selection.Offset(0, 4).Borders(xlEdgeTop).Weight = xlHairline Selection.Offset(0, 4).Borders(xlEdgeBottom).LineStyle = xlContinuous Selection.Offset(0, 4).Borders(xlEdgeBottom).Weight = xlThin End With Next i Application.ScreenUpdating = True

  • 『エクセル』 vbaでオートフィルができない

    Sub Macro1() Range("a1:a10").Select Selection.AutoFill Destination:=Range("A1:A10"), Type:=xlFillSeries End Sub がエラーになります。 内容は「RangeクラスのAotofillメソッドが失敗しました」 となります。 Sub Macro2() Dim i As Long For i = 1 To 10 Cells(i, 1) = i Next End Sub や Sub Macro3() Dim i As Long i = 1 While i <= 10 Cells(i, 1) = i i = i + 1 Wend End Sub と同じような動きをAutoFillを使ってVBAで行いたいのですが むりでしょうか? というのも、 A1に長い関数式を入れて A10000までオートフィルしたいのですが 手作業だと時間がかかるためマクロで行いたいです。 アドバイス宜しくお願い致します。

  • VBAを実行するとエクセルが落ちる

    同一フォルダ内にあるCSVデータを一つのエクセルにワークブックにまとめるため CSVデータを開いて、各シートに値を貼り付けるVBAを作成しました デバックモードで1行毎に実行するとエクセルが落ちることはありませんが 普通に実行するとエクセルが閉じてしまいます 原因が分からないためご指摘いただけると幸いです Win7のOffice2013です。 Sub contents() Sheets("01").Select Sheets("01").Cells.Select Selection.ClearContents Dim ShA As Worksheet Dim FileA As String Set ShA = ThisWorkbook.Sheets("01") ChDir "C:\Users\Public\Documents" FileA = "C:\Users\Public\Documents\01.csv" If FileA <> "False" Then Workbooks.OpenText Filename:=FileA, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShA.Range("A1") ActiveWorkbook.Close False End If Set ShA = Nothing Sheets("02").Select Sheets("02").Cells.Select Selection.ClearContents Dim ShB As Worksheet Dim FileB As String Set ShB = ThisWorkbook.Sheets("02") ChDir "C:\Users\Public\Documents" FileB = "C:\Users\Public\Documents\02.csv" If FileB <> "False" Then Workbooks.OpenText Filename:=FileB, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShB.Range("A1") ActiveWorkbook.Close False End If Set ShB = Nothing Sheets("03").Select Sheets("03").Cells.Select Selection.ClearContents Dim ShC As Worksheet Dim FileC As String Set ShC = ThisWorkbook.Sheets("03") ChDir "C:\Users\Public\Documents" FileC = "C:\Users\Public\Documents\03.csv" If FileC <> "False" Then Workbooks.OpenText Filename:=FileC, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShC.Range("A1") ActiveWorkbook.Close False End If Set ShC = Nothing End Sub

  • エクセル VBA 表示範囲の簡素化

    よろしくお願いします。 下記構文の簡素化ができないでしょうか。 CommandButtonが30個ほどあります。 ーーーーーーーーーー Private Sub CommandButton1_Click() Dim rng As Range Application.Goto Sheets("基本台紙").Range("A1") Set rng = Range("A1:D7") Rows.Hidden = True rng.EntireRow.Hidden = False Columns.Hidden = True rng.EntireColumn.Hidden = False rng(1).Select Unload Me UserForm1.Show vbModeless End Sub ーーーーーーーーーー Private Sub CommandButton2_Click() Dim rng As Range Application.Goto Sheets("基本台紙").Range("A1") Set rng = Range("A8:B21") Rows.Hidden = True rng.EntireRow.Hidden = False Columns.Hidden = True rng.EntireColumn.Hidden = False rng(1).Select Unload Me UserForm1.Show vbModeless End Sub ーーーーーーーーーー Private Sub CommandButton3_Click() Dim rng As Range Application.Goto Sheets("基本台紙").Range("A1") Set rng = Range("C8:D21") Rows.Hidden = True rng.EntireRow.Hidden = False Columns.Hidden = True rng.EntireColumn.Hidden = False rng(1).Select Unload Me UserForm1.Show vbModeless End Sub

  • VBAのコードに関する質問です。

    以下のコードで実行しているのですが上手くデータ数のカウンタが上手くいきません。助言をお願いしたいです。 Range("D2").Select ActiveCell.Formula = "=0.001*C2+D1" Range("D2").Select Selection.AutoFill Destination:=Range("D2:D" & fin), Type:=xlFillDefault Range("D2:D" & fin).Select Dim i As Long, j As Long, flg As Boolean Dim i1 As Long j = 1 For i = 2 To Cells(Rows.count, 2).End(xlUp).Row If Cells(i, 2) = 2 Then flg = True ElseIf Cells(i, 2) = 3 And flg = True Then i1 = i Cells(1, 7) = i - 1 Cells(j, 5) = Cells(i, 4) Cells(j, 6) = Cells(i - 1, 4) flg = False Exit For Else: flg = False End If Next For i = i To Cells(Rows.count, 2).End(xlUp).Row If Cells(i, 2) = 2 Then flg = True ElseIf Cells(i, 2) = 3 And flg = True Then j = j + 1 Cells(j, 7) = i - i1 - 2 i1 = i Cells(j, 5) = Cells(i, 4) Cells(j, 6) = Cells(i - 1, 4) flg = False Else: flg = False End If Next Range("E1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Cells(1, 5) = Cells(2, 4) Cells(Rows.count, 6).End(xlUp).Offset(1).Value = _ Cells(Rows.count, 4).End(xlUp).Value Cells(Rows.count, 7).End(xlUp).Offset(1).Value = 200 Range("H1").Select ActiveCell.Formula = "=(F1-E1)/G1" Range("H1").Select Selection.AutoFill Destination:=Range("H1:H16"), Type:=xlFillDefault Range("H1:H16").Select Range("E1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("F1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("G1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("H1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Dim rowStr As Long, rowEnd As Long Dim A, D, Da, H, K '演算:K=D-Da-H*A Dim cntS As Integer, cntA As Integer Dim cntD As Integer, cntH As Integer Dim r As Long, t As Long rowStr = 2 '開始行 rowEnd = Cells(Rows.count, 7).End(xlUp).Row 'G列で最終行を求める cntS = 1 '周期初期値 cntD = rowStr 'D列行数初期値 cntH = rowStr 'H列行数初期値 For r = rowStr To rowEnd cntA = rowStr For t = 1 To Cells(r, 7) '各周期の繰り返し処理 A = Cells(cntA, 1).Value D = Cells(cntD, 4).Value If t = 1 Then If r = rowStr Then Da = 0 '1周期目は0とする Else '2週期目以降は最初の値に固定 Da = Cells(cntD, 4).Value End If '周期の区切りをF列に出力 Cells(cntD, 11).Value = cntS & "周期" End If H = Cells(cntH, 8).Value K = D - Da - H * A '演算 Cells(cntD, 10).Value = K cntA = cntA + 1 'A列カウンタ更新 cntD = cntD + 1 'D列カウンタ更新 Next t cntS = cntS + 1 '周期カウンタ更新 cntH = cntH + 1 'H列カウンタ更新 Next r

  •  VBA 表作成で内容を最下行で入力した場合 自動で次の行の作成を行いたい。

    VBAで質問です。  Excel2003 最下行を検索し、そこの内容部分を入力された場合、1行あたらしく 式、罫線をコピーしたいのですがずっとループを起こしてしまいます。 直し方を教えていただきたいです。 ソース Private Sub Worksheet_Change(ByVal Target As Range) '------------------------------------ '変数の宣言 '------------------------------------ Dim naiyou As Object Dim bikou As Object Dim xline As Integer Dim yline As Integer Dim count As Integer Dim startrow As Integer Dim maxcolumn As Integer '------------------------------------ '内容=D4の列検索 '------------------------------------ Set naiyou = ActiveSheet.Cells.Find("内容") xline = naiyou.Column '------------------------------------ '表示している最終行の検索 '------------------------------------ startrow = 4 count = Cells(startrow, xline).End(xlDown).Row '------------------------------------ '備考の=I4列検索 '------------------------------------ Set bikou = ActiveSheet.Cells.Find("備考") yline = bikou.Column '------------------------------------ 'コピペ処理 '------------------------------------ If ActiveSheet.Cells(count, 4) <> "" Then Range(Cells(count + 1, 1), Cells(count + 1, yline)).Select Selection.Copy Range(Cells(count + 2, 1), Cells(count + 2, yline)).Select ActiveSheet.Paste Application.CutCopyMode = False Exit Sub Else: End If End Sub

  • VBA超初心者です

    皆さんのお知恵を拝借させてください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/12/1 ユーザー名 : 101 ' Dim pearend As Integer Dim code As Integer Dim codeend As Integer Dim sheet_name As String Dim dayend As Date Sheets("商品名").Select Range("A4").Select Selection.End(xlDown).Select pearend = Selection.Row() For l = 4 To pearend Step 2 For r = 2 To 3 Cells(l, r).Select code = Cells(l, r).Value Select Case code Case 1000 To 1999 sheet_name = "1000" Case 2000 To 2999 sheet_name = "2000" Case 3000 To 3999 ssheet_name = "3000" Case 4000 To 4999 sheet_name = "4000" Case 5000 To 5999 sheet_name = "5000" End Select Sheets(sheet_name).Select Range("B4").Select Selection.End(xlToRight).Select codeend = Selection.Column() Range("A5").Select Selection.End(xlDown).Select dayend = Selection.Row() For i = 2 To codeend If code = Cells(4, i).Value Then Range(Cells(dayend, i), Cells(5, i)).Select Selection.Copy Sheets("商品名").Select Range("K3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If Next Next Next End Sub というマクロをつくってみたのですが、何順目かあたりから For r = 2 To 3 のrがなぜか4になっています。正直知識がないのでさっぱりわかりません。どこに問題があるか詳しい方教えてください。

  • 空白セルと0値を識別させたい。(VBA)

    すみません、誰か教えていただけますか。 シートの53、54、55行目にそれぞれ値入っています。 それを3行目にビジュアル的に表現させています。 55行目はセルの色で、53行目は数値があり同じ値が 続く部分の合計を出しています。 しかし、下記の記述ですと数値が0(変数D=0)の時に うまくいきません。空白セルと認識されてしまうと思います。 何か、良い方法があれば教えて頂けませんでしょうか。 宜しくお願いします。 Sub 表示() Dim a As Long Dim c As Long Dim D As Long Dim e As String Dim f As String c = 3 For a = 3 To 64 With Worksheets("Sheet1") If .Cells(53, a) <> .Cells(53, a + 1) Then .Range(.Cells(53, c), .Cells(53, a)).Select D = WorksheetFunction.Sum(Selection) e = D f = Selection(1).Offset(1, 0).Value G = Selection(1).Offset(2, 0).Value If D <> 0 Then Selection(1).Offset(-50, 0).Value = f + "//" + e .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.Interior.ColorIndex = G End If If Selection(1).Value = "" Then .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone End If c = a + 1 End If End With Next End Sub

  • ExcelのVBAについて(再掲)

    ExcelのVBAについて(再掲) 以下のシートは作成中(勉強中)のものです。いずれは私的に実用しようと思っています。。 さて、質問ですが、「シート1のA3に入力、手動でシート2に移動自動で転記し、手動でシート1に移動し、また入力する」という単純動作を目的に作成しています。問題点は沢山ありますが、例えば『シート1の時間列が何かの変更で書き換えられてしまう』、『沢山書いていくと分かりますが、途中で行削除を行うと、時間列に削除行分の時間記録が下向きに書き込まれる』などです。他にもあると思っていますが、(1)この問題はなぜ発生するのか?(2)修正案としてはどの様な例があるか? 等をお聞きしたいです。細々と問題はあると思っていますので、その様な問題点もお聞きしたいです。 よろしくお願いします! '///Sheet1/// Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim time7 As Range For Each time7 In Target If time7.Column = 1 Then time7.Offset(0, 4).Value = Format(Now, "Short Time") & vbCrLf & _ Format(Now, "yyyy/mm/dd hh:nn:ss AM/PM") Application.EnableEvents = False Application.EnableEvents = True End If Next time7 Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") ws2.Range("A3:H3").Value = ws1.Range("A3:H3 ").Value End Sub Private Sub Worksheet_Activate() Application.Goto ActiveSheet.Range("A3"), True Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove Sheets("Sheet1").Range("H3").Select ActiveCell.FormulaR1C1 = "5" Sheets("Sheet1").Range("E3").Select Selection.ClearContents Dim str_Left As String 'セルE4に文字列、セルH4に数字を予め入れておくこと。 str_Left = Left(Cells(4, 5), Cells(4, 8)) MsgBox str_Left & vbCrLf & " " & "OKボタンを押してください!" Sheets("Sheet1").Range("A3").Select End Sub ' ///Sheet2/// Private Sub Worksheet_Activate() Application.Goto ActiveSheet.Range("A3"), True Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove Sheets("Sheet2").Range("A3").Select End Sub

  • エクセル マクロ:文字変更

    教えてください。 sheet5にデータがあります。 マクロを実行すると、一番右の列のセルに○があると●と書き換える 一番右の列のセルに△があると▲と書き換えるコードを作成しています。 下記のコードでは時間がかかってしまいます。 省略 If Sheets("sheet5").Cells(r, cmax).Value = "○" Then Sheets("sheet5").Cells(r, cmax).Value = "●" 省略 AutoFilterを使用してマクロを作成しましたが、列に○と△が両方無いと 範囲指定したセルがすべて▲となってしまいます。 下記コードをどのように手直ししたらよいのか教えて頂けないでしょうか。 よろしくお願いします。 Sub 文字変更() Dim c As Integer Dim cmax As Integer Dim rmax As Long With Sheets("sheet5") rmax = .Range("A3").End(xlDown).Row cmax = .Range("A3").End(xlToRight).Column .Rows("1:1").Select Selection.AutoFilter For c = 2 To cmax Selection.AutoFilter Field:=c, Criteria1:="○" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "●" Selection.AutoFilter Field:=c, Criteria1:="△" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "▲" Selection.AutoFilter Field:=c Next c End With Selection.AutoFilter End Sub

専門家に質問してみよう