如果存在某些条件,则在Excel中追加行

我试图使用比较来查找Excel电子表格中的行,并修改它,如果date是相同的今天的date和域是一样的input。

我似乎无法find一篇文章来帮助我找出如何find细胞来比较它们。 一旦行匹配,我会附加一些单元格。 我的excel看起来像这样:

Domain, Succeeded, Failed, As Of ABC, 245, 12, 5/9/2012 NET, 7778, 25, 8/3/2013 ABC, 454, 44, 5/9/2016 NET, 54,90, 5/9/2016 

所以我的代码将提示一个域。 用户将inputABC。 该代码看到与匹配的ABC和5/9/2016行,并添加了多less成功,以及如何可能失败,该行中适当的列。 我可以得到额外的一部分,我只需要帮助找出如何parsingExcel文件。

我最终会使这个代码人为错误的certificate,但为了得到帮助parsing。 这是我的。

 $excelfilepath = 'file\test.xlsx' $Excel = New-Object -ComObject Excel.Application $ExcelWorkBook = $Excel.Workbooks.Open($excelfilepath) $ExcelWorkSheet = $Excel.WorkSheets.item("sheet1") $ExcelWorkSheet.activate() $Domain= Read-Host "What is the Domain Name" $succeeded = Read-Host "How many succeeded" $failed = Read-Host "How many failed" $todaysdate = Get-Date $todaysdate= [DateTime]::Parse($todaysdate).ToString("MM/dd/yyyy") $lastRow = $ExcelWorkSheet.UsedRange.rows.count $row = $ExcelWorkSheet.UsedRange.Rows | where {$_.Value2 -eq $Domain} | select Value2 

用我得到的

 Value2, ------- {ABC, 245, 12, SomeDecimal...} {ABC, 454, 44, 42499...} 

修改(也许??)

 $Row = $ExcelWorkSheet.UsedRange.Rows | where {$_.Cells.Item(1).Value2 -eq $Enviornment -and $_.Cells.Item(4).value2 -eq $todaysdate} $Row.Cells.Item(2).value2 = $succeeded + $Row.Cells.Item(2).value2 

你将要在这里指定要比较的单元格。 就像是:

 $row = $ExcelWorkSheet.UsedRange.Rows | where {$_.Cells.Item(1).Value2 -eq $Domain -and $_.Cells.Item(4).value2 -eq $todaysdate} 

该行作为Range对象获取。 然后你修改你想要的行中的单元格:

 $Row.Cells.Item(2).value2 = $succeeded + $Row.Cells.Item(2).value2 

编辑:哪里声明细分。 当然,我们可以解决这个问题。 这就是这个说法:

 where {$_.Cells.Item(1).Value2 -eq $Domain -and $_.Cells.Item(4).value2 -eq $todaysdate} 

我认为混淆来自$_.Cells.Item(1).Value2 。 它所做的是查看UsedRange中的所有行,每行查看该行中的单元格,以及指定第一个单元格(即列A中的单元格)的单元格。 然后检查该单元格中的值是否与$Domain匹配。 如果是这样的话,它将移动到Where语句的下一部分,在Where指定行中的第4个单元格(D列中的单元格),并检查该单元格的值是否与$todaysdate匹配。

你的修改…你在Item()方法中指定了两个参数,我不认为它需要两个参数。 你可以按照我指定的方式来尝试代码,然后让我知道,如果你使用它的错误,或者如果它不是你想要的?