複数の条件にExcelシートの分割に応じて、シートシートシートシートの複数のマージ

この例では、条件の下でシートがExcelで複数のシートに分割する方法について説明します。注:多くのシートで友人(I).deleteこのコードのミス、「データソース」としてデータシート名を分割するには、次の最初のステップに注意を払う、ではないあなたは、この新しいブックをシート1。手動で「データソース」ボタンに変更されました。それとも、ソースワークシート「シート1」を変更する必要があり、「データソース」のコードをもOKされ得ます

CFGZBサブ()

    バリアントとしての薄暗いmyRange 

    薄暗いmyarrayの

    範囲としての薄暗いtitleRange 

    として文字列の薄暗いタイトル

    として整数の薄暗いcolumnNum 

    myRange(:=プロンプト= Application.InputBox タイトル行を選択してください:、種類:= 8 

    MyArrayという = WorksheetFunction.Transpose( myRange)

    セットtitleRange = Application.InputBox(プロンプト:= ヘッダーは最初の行でなければならない分割を選択し、そのようなものとして細胞、:」名前「」、タイプ:= 8 

    タイトル = titleRange.Value 

    columnNum = titleRange.Column 

    Application.ScreenUpdating= 

    Application.DisplayAlerts = Falseの

    薄暗いI&、マイアと、編曲、NUM&

    薄暗いD、K 

    私は Sheets.Countへ= 1つのステップ- 1 

        シート(I).NAME場合、<> " シート1 " 次に
             シート(I).Delete 

        END IF 

    次のI 

    セットD =のCreateObject(" Scripting.Dictionary " 

    マイア =ワークシート(" シート1 " ).UsedRange.Rows.Count 

    編曲 =ワークシート(" シート1").Range(セル(2 、columnNum)、細胞(マイア、columnNum))

    方には = 1 にUBound関数(編曲)

        D(編曲(I、1))= "" 


    のk = d.keysを

    私が = 0をUBound関数(k)に

        設定CONN =のCreateObject(" ADODB.Connectionの" 

        conn.Open " プロバイダ= microsoft.jet.oledb.4.0; =データソースを、拡張プロパティ= 8.0優れ"ThisWorkbook.FullName 

        のSql = " *から選択[Sheet1の$]ここで"タイトル&&" = ' "&K(I)&" ' " 

        Worksheets.Add後: = シート(Sheets.Count)

        ActiveSheetで

            .NAME = K(I)

            numに = 1 にUBound関数(MyArrayという)

                .Cells(1、NUM)= myarrayの(NUM、1 

            次にNUM 

            .Range(" A2 " ).CopyFromRecordset conn.Execute(SQL)

        で終了

        シート(1 ).Selectの

        シート(1 ).Cells。選択する

        Selection.Copy 

        ワークシート(Sheets.Count).Activate 

        ActiveSheet.Cells.Select 

        Selection.PasteSpecial貼り付け: = xlPasteFormats、操作:= xlNone、_ 
                               SkipBlanks: = Falseを、トランスポーズ:= Falseの

        Application.CutCopyMode = Falseの

    私次

    はconn.close 

    セットCONN = 何も

    Application.DisplayAlerts = Trueの

    Application.ScreenUpdating = Trueの

End Subの

 

1.(:最高の直接操作が失敗を避けるために、元のデータファイルを操作するのではなく、データの損失PS)のようにコピーし、同じフォルダ内のファイルをマージするには

2.このディレクトリに「合併の.xlsx」を作成します。

「合併の.xlsx」を開くには3.ダブルクリックして

同時に4. ALT + F11

オプション明示的な

複数のブックと組み合わさサブmergeonexlsは()」指定されたワークシート

エラーの再開次に

変異体のX1としての暗いX変異体のWとしてブックのWSHとしてとしてワーク

暗いTのブックとしてのTSワークシートとして、整数のLとしてのHとしてロング

Application.ScreenUpdating = Falseの

Application.DisplayAlerts = Falseの

X-Application.GetOpenFilename =(FileFilterの:. =「Excelファイル(* .XLS; *の.xlsx)、 * XLS; *の.xlsx、 すべてのファイル(* *)、*。。 。* "タイトルは:=" Excelは」を選択し、複数選択:= TRUE)

に設定T =はThisWorkbook 

。指定したワークシートに組み込まれたセットのt.Sheets TS =(1)「、これはシートの最初である

L = ts.UsedRange .SpecialCells(xlCellTypeLastCell).Column 

においてX1に対する各X 

場合X1 <>偽そして

 セットWorkbooks.Open Wは、=(X1)

 を設定w.Sheets WSHは=(1)「は、所望のワークシートを指定するために結合された、最初の作業場所でありますテーブル

 ts.UsedRange.SpecialCells = H(xlCellTypeLastCell).Row 

 場合L = = 1. 1 HおよびAND ts.Cells(1 ,. 1)= ""次に

 wsh.UsedRange.Copy ts.Cells(1 ,. 1)

 エルス

 wsh.UsedRange ts.Cellsは(H + 1 ,. 1).copy 

 もしエンド

 w.Close 

END IF 


Application.ScreenUpdating = Trueの

Application.DisplayAlerts = Trueの

エンドサブ

順次組み込まれたワークブックの複数に対応するシート内のサブmergeeveryonexlsを()」ワークブックの中に存在するワークシート、即ち、合成二に、第一、第二相当に組み込まれた最初のシートに対応...... 

誤差に再開次

変異体としては、同様に、WSHのブックWのバリアントX1としての暗いXワークシートAS 

薄暗いT ASワークブック、ワークシートTS AS、AS I整数、整数AS L、AS Hロング

Application.ScreenUpdating = Falseの

Application.DisplayAlerts = Falseの

X = Application.GetOpenFilename(FileFilterの:= "エクセル文件(* .XLS; *の.xlsx)、* XLS; *の.xlsx、所有文件(* *)、*。*。。"、タイトル:= "エクセル选择" 、複数選択:= TRUE)

を設定し、T =はThisWorkbook 

Xの各X1について

X1 <>偽そして場合

 = Workbooks.Open(X1)集合W 

 iは1〜w.Sheets.Countを=ために

I> t.Sheets.CountそしてT場合.Sheets.Add後:= t.Sheets(t.Sheets.Count)

 セットTS = t.Sheets(I)

 の設定WSH = w.Sheets(I)

 L = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Column 

 H = TS .UsedRange.SpecialCells(xlCellTypeLastCell).Row 

 場合のL = 1及びH = 1、ts.Cells(1、1)= ""次に

 wsh.UsedRange.Copy ts.Cells(1,1)

 それ以外

 wsh.UsedRange.CopyのTS .Cells(H + 1、1)

 END IF 

 次に

 w.Close 

END IF 


Application.ScreenUpdatingは真= 

Application.DisplayAlerts = Trueの

End Subのを

  

 出典ます。https://blog.csdn.net/qq_38545713/article/details/82500483

おすすめ

転載: www.cnblogs.com/hgc-bky/p/11849188.html