0

私はワークブック 1 を持っています-->monthdayマルコの入力 (24 秒: 110、125、210、.......1210、1225 を提供しています) を持つシート 3。入力は年に関係なく常にmonthdays で、毎月 10 日と 25 日にデータが受信されます。上記の日が非営業日でない場合、10 日が休日の場合、11 日から 15 日の間の何かに置き換えることができるとします。同様に25日が祝日の場合、毎月26日~30日になる可能性があります。上記のシート 1 の条件に基づいて、データをフィルタリングする必要があります。例:monthdayが 110 の場合、sheet1 で検索します。sheet1に前述の「110」のデータがない場合、「115」までの可能性があります(ただし、理想的には、入力「sheet3」に24日のみを提供しています)。問題のmake vbaに関して私を案内/助けてください。

Sub Creation()

Workbooks("Data").Sheets("Sheet3").Activate

For X = 1 To 24

Workbooks("Data").Sheets("Sheet3").Activate

If Range("A" & X).Value > 0 Then


monthday = Range("A" & X).Value

'MsgBox ("Creating Inventory Options for following: " & Range("A" & X))
If monthday > 0 Then
    Set NewBook = Workbooks.Add
        With NewBook
            .Title = monthday
            Test1Str = "Seperate_ Data Option Allocation_"
            TestStr = monthday

            ActiveWorkbook.SaveAs Filename:="D:\Macro Practice\" & Test1Str & TestStr
            Workbooks("Seperate_ Data Option Allocation_" & TestStr).Save

             Workbooks("Seperate_ Data Option Allocation_" & TestStr).Sheets("Sheet1").Name = "Data1"

    Workbooks("Seperate_ Data Option Allocation_" & TestStr).Sheets("Sheet2").Name = "Data2"
    Workbooks("Seperate_ Data Option Allocation_" & TestStr).Sheets("Sheet3").Name = "Calculation"
    Workbooks("Seperate_ Data Option Allocation_" & TestStr).Sheets.Add.Name = "Validation"           
    Workbooks("Data").Activate     
    Workbooks("Data").Sheets("Data2").Select
    Range("A1").Select
    Selection.AutoFilter field:=10, Criteria1:=Teststr
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Workbooks("Seperate_ Data Option Allocation_" & TestStr).Sheets("Data2").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Workbooks("Seperate_ Data Option Allocation_" & TestStr).Save
    end with
end if
next x
end sub
4

1 に答える 1

0

上記のコードは、データワークブックからすべてのデータをコピーすると思います..以下の2行を置き換えたほうがよいでしょう

Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy

Dim rng As Range
Set rng = Range("A1").CurrentRegion
   rng.SpecialCells(xlCellTypeVisible).Copy
于 2013-10-02T04:03:32.003 に答える