Excelファイルの処理

Excelファイルの処理

最初の 20x25 セルには有用な情報があり、そのセルの外側には不要な情報がある Excel ファイルが 40~50 個あります。すべてのファイルから不要な情報を一気に削除して、最初の 20x25 セルだけを残す最も簡単な方法は何ですか? Windows で Powershell を使用してこれを行うことはできますか?

ここに画像の説明を入力してください

答え1

私の意見では、これを行う最も簡単な方法は、Excel の VBA マクロを使用することです。

Sub CleanFiles()
' for each file in a directory
'    open it, delete all cell content around the first 20x25 cells, write it back
' 2015-10-15

    Dim path As String, aFile As String
    Dim arr As Variant

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    path = "D:\TEMP\xls\"          ' must have trailing backslash
    aFile = Dir(path & "*.xls")
    Do While aFile <> ""
        Application.StatusBar = aFile
        aFile = path & aFile
        Workbooks.Open (aFile)

        ' process file content
        arr = ActiveSheet.Range("A1:Y20")
        Cells.Clear
        ActiveSheet.Range("A1:Y20") = arr

        ' save and close WB
        ActiveWorkbook.Close True, aFile
        aFile = Dir
    Loop

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.EnableEvents = False
    Application.StatusBar = False
End Sub

まず、画面の更新と自動マクロを無効にします。次に、特定のフォルダーをスキャンして '*.xls' ファイルを探し、各ファイルを開きます。保存する領域の内容は内部的に保存され、その後、シート全体がクリアされ、内容がシートに書き戻されます。ファイルを閉じるときは、プロンプトなしで保存されます。

答え2

Get-Content file.csv | select -First 25 | Export-Csv newfile.csv最初の 20 ~ 25 行を指定する場合は、a を実行できますGet-Content -Header @("a","b","c") file.csv | Select a,b,c | Export-Csv newfile.csv。この順序で a などを実行して、y まですべて選択すると、25 番目の列になります。ただし、もっと良い方法があるかもしれません。

関連情報