2016-07-13 10 views
0

Ich habe ein Excel-Blatt, in dem ich die Spaltenwerte wie ID von 10. Zeile bis 45. Zeile aktualisieren müssen. Ich habe eine gemischte ID "abcd_10", die auf "abcd_45" erweitert werden muss. Was sind die Befehle, um dies zu tun, anstatt eine for-Schleife zu verwenden. Denn For-Loop benötigt viel Zeit, weil es immer wieder auf die Zelle hinweist und es zeitaufwendig ist. Ich verwende diesen Code, bitte sagen Sie mir, was darin falsch ist.Auto-Generierung der Spaltenwerte in Excel-Blatt mit den PowerShell-Befehlen

$codeName = $currentCode 
$finCode = $codeName + "_" + $i 
$currentSheet.Cells.Item($intRow, $currentCol).Value2 = $finCode 


$range1 = $currentSheet.Range("C10"); 
$r = $currentSheet.Range("C10:C45"); 
$range1.AutoFill($r, $currentCol) 

$finCode hat den Anfangswert „abcd_10“, die in der 10. Zeile eingefügt wird und nun muss ich es „abcd_45“ bis zur 45. Reihe erstrecken. Ich habe AutoFill dafür verwendet, aber es funktioniert nicht für mich.

Antwort

0

Probieren Sie es einfach mit

$range1.AutoFill($r, 0) 

Die second parameter gibt die fill type und 0 ist die Standardeinstellung, die in Ihrem Fall funktionieren sollte (ich es nur von VBA obwohl getestet).


aktualisieren, falls Sie Standard-COM-Interop verwenden:

Das folgende Skript funktioniert für mich (ich einige Standardwerte für unbekannte Werte verwendet).

$Filepath = "C:\tmp\posh\excel-interop\Book1.xlsx" 

$Excel = New-Object -Comobject Excel.Application 
$Excel.Visible = $True 
$Workbook = $Excel.Workbooks.Add() 
$currentSheet = $Workbook.Sheets.Item('Sheet1') 

$i = 10 
$codeName = 'abcd' 
$finCode = $codeName + "_" + $i 
$currentSheet.Cells.Item(10, 3).Value2 = $finCode 

$range1 = $currentSheet.Range("C10"); 
$r = $currentSheet.Range("C10:C45"); 
$range1.AutoFill($r, 0) 
+0

@DAXholic: 0 ist die Spaltennr. Feld, so wird es nicht funktionieren. –

+0

Bitte zeigen Sie mehr von Ihrem Code bc Ich weiß derzeit nicht, ob Sie Standard-COM verwenden, um mit Excel oder einer anderen Bibliothek zu interagieren – DAXaholic