2016-10-11 4 views
0

Excelで大量のファイルを手動で処理していました。私はいくつかの検索を行ってきましたが、このプロセスをどのように自動化して達成できるかについてのベストプラクティスは見つかりませんでした。次のようにタブ区切りファイルの値に-1を掛けて無効にする処理を自動化

私手動のプロセスは以下のとおりです。

私は.TAB(タブ区切り)ファイルを持っています。各行に合計8つの「列」があります。私はすべての行の最後の5列の数値を無効にする必要があります。私はExcelで

  • 開き
  • タイプ-1空白のセル内のファイルを何をしてきた

    。最後の5列→右クリックして貼り付け→ →乗算→ のデータは、ファイルを保存し

  • を入力しますハイライト
  • それをコピーします。

これはPowerShellや代替スクリプトになるかどうかは分かりません。そのため、他の人のアドバイスを参考にしたいと思っています。あなたの時間をありがとう。

+0

わかりやすくするために、値を無効にするだけでなく、プロセスがファイルを開き、値を無効にして、終了時にタスクを実行する方法を探していますファイル。 – UnladenSwallow

答えて

0

このマクロを実行できる任意の場所にシート上にあるボタンには、クレジットを付けることができます。マクロ/ VBA(私に知らせていない場合)とA1 = -1(以下のスクリプトで変更可能)の基本を知っていると仮定します。

Range("A1").Select 
ActiveCell.FormulaR1C1 = "-1" 
Range("B1:F1").Select 
Range(Selection, Selection.End(xlDown)).Select 
Range("A1").Select 
Selection.Copy 
Range("B1:F1").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _ 
    SkipBlanks:=False, Transpose:=False 
+0

私はすぐにマクロ/ VBAに精通していませんが、私はそれを把握するためにいくつかのグーグルをすることができますかと推測します。 しかし、私は悩んでいるかもしれません。範囲を動的に宣言する方法はありますか?つまり、行数はファイルごとに異なります。場合によっては列が10行しかない場合もあれば、何万行もある場合もあります。 – UnladenSwallow

+0

だから、クイックアップデート。私は正常にマクロを記録し、それをリボンに追加しました。それは手動でファイルを処理する時間を短縮しますが、依然として手作業です。 体系的に次のように行うための理想的な方法があります: ファイルとフォルダを定義するマクロ(またはVBAスクリプト) 保存変更したファイル – UnladenSwallow

+0

このdoesntのは本当に質問に答えるを適用し、自動的に を否定するすべてのファイルを開くためには。 .. – Tyeler

1

PowerShellでは、文字区切りのファイルを書き込むための読み取りのためのImport-CsvExport-Csvを使用することができます。どちらのコマンドレットを使用すると、区切り文字を指定することができますパラメータ-Delimiter提供:Import-Csv経由

CSVのインポート
$csv = Import-Csv 'C:\path\to\input.csv' -Delimiter "`t" 
$csv | Export-Csv 'C:\path\to\output.csv' -Delimiter "`t" -NoType 

をあなたにCSVからの各フィールドは、オブジェクトのプロパティとして表現されたカスタムオブジェクトのリストを提供します。データをファイルに書き戻す前に、プロパティの値を変更してフィールドを変更します。これを行うには、次の2つのいずれかの方法をとることができます。

  • を完全に変数にCSVを読む、あなたはループ内で変更したいフィールドを更新し、そのファイルに戻ってデータをエクスポートします。

    $csv = Import-Csv ... 
    foreach ($row in $csv) { 
        [int]$row.B *= -1 
        [int]$row.F *= -1 
    } 
    $csv | Export-Csv ... 
    
  • パイプラインにCSVを読み、calculated propertiesを経由して、変更したいフィールドを置き換えます。これが動作するためにあなたがしなければならないことEIT

    Import-Csv ... | 
        Select-Object -Include *,@{n='B';e={-$_.B}},@{n='F';e={-$_.F}} -Exclude B,F | 
        Export-Csv ... 
    

    注意を彼女は別の入力ファイルと出力ファイルを使用するか、かっこ内にImport-Csvステートメントを入れます。それ以外の場合はがまだ読み取っている間にCSVに書き込むことができないため、Export-Csvは失敗します。

+0

封印されたプロパティへのポインタをありがとう、それを知らなかった! – davidhigh

関連する問題