无法更改单元格上的公式?
在这个问题之后 ,我试图用许多工作簿上的所有公式replace$B$1
到TEXT($B$1,"0000")
。 现在我已经过了那个.save()的问题,我还有另外一个(实际上应该是第一个):我似乎无法改变。无论我尝试什么, .Formula
价值。
PS C:\> $Search.Formula = $Search.Formula -replace '\$B\$1','TEXTO($B$1,"0000")' Exceção ao definir "Formula": "Exceção de HRESULT: 0x800A03EC" No linha:1 caractere:1 + $Search.Formula = $Search.Formula -replace '\$B\$1','TEXTO($B$1,"0000")' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException + FullyQualifiedErrorId : CatchFromBaseAdapterSetValueTI
公式是:
=PROCV(("A"&ANO($A6)&"M"&MÊS($A6)&"P"&$B$1);BASE!$A:$P;9;FALSO)
在英语中,如果我记得正确的关联:
=VLOOKUP(("A"&YEAR($A6)&"M"&MONTH($A6)&"P"&$B$1);BASE!$A:$P;9;FALSE)
预期的产出将是
=VLOOKUP(("A"&YEAR($A6)&"M"&MONTH($A6)&"P"&TEXT($B$1,"0000"));BASE!$A:$P;9;FALSE)
有一些事情与你提供的东西有关。 乍看之下,你似乎正在使用反斜杠作为转义字符,使美元符号文字。 这个在PowerShell中的转义字符是back-tick或grave(例如“)。
如果我在Excel中执行此操作,则可能只需在text($B$1, "0000")
查找并replace工作表上的每个$B$1
。 在我看来,它足够强大,可以在不使用PowerShell的-replace
方法的情况下处理操作。 工作表方法在一定程度上取决于$B$1
开始可用,但由于它也在replace中,所以您几乎需要知道您事先要replace的内容。 如果这个脚本留给临时用户,那么在这个区域中的一些错误控制可能是必要的。
$excel = New-Object -comobject Excel.Application $FilePath = "c:\temp\example.xlsx" $workbook = $excel.Workbooks.Open($FilePath) $excel.Visible = $true $worksheet = $workbook.worksheets.item("Sheet1") #set some Find & Replace vars $what = "`$B`$1" $with = "text(`$B`$1, `"0000`")" #use worksheet-wide Find & Replace to change formula $worksheet.usedrange.replace($what, $with, 2) #formula(s) should be changed. now Find it and display it $fnd = $worksheet.usedrange.find($what, $worksheet.range("A1"), -4123, 2) Write-Output $fnd.formula $workbook.save() $workbook.close() $excel.quit()
我已经通过在操作之后查找和显示公式来validationRange.Replace方法 ,并且更广泛地使用了严重转义字符,而不是在引用string中的单引号和双引号之间来回切换。
上面的代码使用我testing过的EN-US版本。 您的区域设置的实际replace文本似乎是,
$with = "texto(`$B`$1; `"0000`")"