【问题标题】:Find cell value begins or contains using wildcards with powershell使用带有 powershell 的通配符查找单元格值开始或包含
【发布时间】:2019-07-12 18:59:01
【问题描述】:

我无法在 Excel 工作表中查找值。 我想获取包含字符串值的单元格编号,但我需要使用通配符。 我正在搜索的单元格以 B- 开头,我正在使用此代码:

$excel = New-Object -ComObject excel.application
$destinationPath = "C:\Users\john\Desktop\wb.xlsx"
$workbook = $excel.Workbooks.Open($destinationPath)
$sheet1 = $workbook.WorkSheets.item("Sheet1")
$sheet1.activate()
$range = $sheet1.Range("A:A").EntireColumn
$s = $range.find("B-")
write-host "Range found: " $s.address().tostring()

这将返回第一个包含 B- .... 的单元格,但我需要知道以它开头的第一个单元格。所以我认为我必须使用通配符,但我不知道如何。

请问,谁能帮我实现这个目标??

谢谢!! BR。

【问题讨论】:

  • 您能否举一个带有字符串的值的示例,以确定您是否正在寻找regex
  • 嗨维韦克!以 B- 开头的单词,之后可以是任何字符,例如 B-* 谢谢!!!! ;) BR。
  • 这应该对你有用 - $range.find("B-").Address()

标签: excel powershell


【解决方案1】:

这是一个可以使用正则表达式的可行解决方案:

Add-Type -AssemblyName Microsoft.Office.Interop.Excel

$excel               = New-Object -ComObject Excel.Application
$excel.Visible       = $True
$excel.DisplayAlerts = $False 

$workbook            = $excel.Workbooks.Open( "C:\Users\john\Desktop\wb.xlsx", [System.Type]::Missing, $false ) 

$worksheet = $workbook.WorkSheets.item("Sheet1")
[void]$worksheet.activate()

$searchRange = $worksheet.Range("A:A").EntireColumn
$searchFor   = '^.*B\-.*$'

$foundCell   = $null
foreach( $cell in $searchRange.Cells ) {

    if( $cell.Value2 -match $searchFor ) {
        $foundCell = $cell
        break
    }
}

if( $foundCell ) {
   $foundCell.Value2
}

[void]$workbook.Close() 
[void]$excel.Quit() 

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

【讨论】:

  • 你好 f6a4!它返回此错误:使用“3”参数调用“打开”的异常:“旧格式或无效类型库。(来自 HRESULT 的异常:0x80028018(TYPE_E_INVDATAREAD))”抱歉给您带来不便,谢谢,BR。
  • 仅尝试 $excel.Workbooks.Open("C:\Users\john\Desktop\wb.xlsx")。
  • 你好 f6a4!问题是powershell控制台的版本......在2台机器上测试,第二台有powershell v4,我更新到v5并且一切正常!我希望这对其他人有所帮助,谢谢您的帮助!!! BR。
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多