使用Powershell在MAX值的基础上在Excel WB中查找ROW值

时间:2018-08-08 16:42:05

标签: excel powershell

我有一本Excel工作簿,其值从F13到F40,这些值会更改我们执行的每个Powershell作业。

我需要找到F13-F40范围内的前3个值,并且需要获取这三个值中每个值的行号 到目前为止,我可以在Powershell中使用此代码获得3个值

$EXCEL = New-Object -ComObject Excel.Application
$EXCEL.visible = $false
$basefinalwb = $EXCEL.workbooks.open("C:\relax\Book1.xlsx")
$basefinalws = $basefinalwb.worksheets.Item("Current Results")
$MAX1 = $basefinalws.cells.item(1,1).Formula = "=LARGE(F13:F40, 1)"
$MAX2 = $basefinalws.cells.item(2,1).Formula = "=LARGE(F13:F40, 2)"
$MAX3 = $basefinalws.cells.item(3,1).Formula = "=LARGE(F13:F40, 3)"
$MAX11 = $basefinalws.cells.item(1,1).value2
$MAX21 = $basefinalws.cells.item(2,1).value2
$MAX31 = $basefinalws.cells.item(3,1).value2
Write-host Max11 is $max11
Write-host Max21 is $max21
Write-host Max31 is $max31

The Results are this:
Max11 is 0.112570356472795
Max21 is 0.097560975609756
Max31 is 0.0881801125703564

现在我需要弄清楚这些值中的每一个来自哪个行

所以我尝试了这段代码,它返回空白

   $Cell2 = $basefinalws.range("F1","F40").find("$MAX21")
   $Cell2.Value2
   $Cell2.Row
   $Cell2

在测试中,我什至拉出了数值的来源单元格上的值,并且它们匹配..我只是无法弄清楚为什么“查找”不起作用。

现在我唯一能想到的是F列中的所有值都来自公式=(D13-C13)/ C13,但是上面的代码确实抓住了单元格的值,只是不能-找到它,以便我可以获取行号

如果有人知道我要去哪里错了,可以寻求帮助或完成任务的简便方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于您已经使用LARGE公式找到了3个最高值,因此使用FindROW和{{1} }工作表上其他地方的公式...类似的东西(已通过INDEX中的公式MATCH进行了测试。

=(D13-C13)/C13