$excel_test = New-Object -ComObject Excel.Application
$excel_test.visible =$true
$excel_test.DisplayAlerts =$true
$excel_test.Workbooks.Add("C:\Users\Lab-User\Documents\Test1.xlsx")
$strFormula = "=((A1:O29/10000)-1)"
$excel_test.Worksheets.Item(2).Cells.Item(2,2).Formula() = $strFormula
基本上,我有一个虚拟的Excel文件。这个文件包含一堆数字。从每个单元格中,我想将数字除以10000,然后将其减去1.我希望将答案放在Sheet2,第2列和第2行(Excel中的B2)中。我希望每个单元格的结果放在第二个工作表中,偏移1行1列。
答案 0 :(得分:0)
所以你需要一个For循环以便你可以处理每个单元格,我建议将变量设置为范围A1:O29,然后将另一个变量设置为范围B2:P30。然后($ RangeA.Cells.Item(1)/ 10000)-1 = $ Range2.Cells.Item(1),因此For循环很容易。我将使用您的代码启动,然后制作一个空白的电子表格并生成一些随机数据进行测试(您可以使用现有的数据),设置范围,然后循环设置Sheet2中的值。
$excel_test = New-Object -ComObject Excel.Application
$excel_test.visible =$true
$excel_test.DisplayAlerts =$true
$workbook = $excel_test.Workbooks.Add()
$Range1 = $workbook.Worksheets.Item(1).range("A1:O29")
$Range2 = $workbook.Worksheets.Item(2).range("B2:P30")
#Generate random data in sheet 1
$range1.cells | %{$_.value2 = get-random -Minimum 10000 -Maximum 100000}
#Set associated item in Range2 to the calculated value from the source in Range1
For($i = 1;$i -le $Range1.Cells.count;$i++){
$Range2.Cells.Item($i).value2 = ($Range1.Cells.Item($i).Value2/10000)-1
}
如果需要,可以将($Range1.Cells.Item($i).Value2/10000)-1
括在[Math]::Round(<formula>)
之内,或使用[Math]::Floor()
始终向下舍入,或[Math]::Ceiling()
始终向上舍入。