excel Powershell:选择包含列编号的范围

4xrmg8kj  于 2023-10-22  发布在  Shell
关注(0)|答案(2)|浏览(135)

我有一个脚本,它采取了列号($lc)和行号($sr / $lr)。
现在我想选择一个从($lc - 7)($sr)到($lc)($lr)的范围。
问题我不知道如何将列号转换为字母?如何使用号码来寻址范围?

$file = "C:\Test\Excel_Matrix.xlsx"
#Program definieren
$excel = New-Object -ComObject Excel.Application
#im hintergrund ausführen
$excel.visible = $false

    $table = $null
    $workbook = $excel.workbooks.open($file)
    $table = $workbook.Worksheets.Item("Matrix")

    ###########
    #Basisdaten
    ###########
    
   

        $table = $null
        $workbook = $excel.workbooks.open($file)
        $table = $workbook.Worksheets.Item("Matrix")
        
        IF($table -ne $null)
        {
            #Last Row lr
            $LetzteZeile = $table.Range("A10:A1000").Find("S999").row
            # start row sr
            $StartZeile = $table.Range("A10:A1000").Find("S002").row
            # last column lc
            $LetzteSpalte = $table.UsedRange.Find($LastText).Column
            
            $StartZeile
            $LetzteZeile
            

            **### DON'T WORK ###**   
            
            $table.Range(.Cells($StartZeile,1),.Cells($LetzteZeile,$LetzteSpalte)
   
        }

        $workbook.Close()
        $excel.Quit()
        $excel = $null

谢谢你的时间。

zhte4eai

zhte4eai1#

.Cells属性 * 的(隐含的参数化.Item()属性)接受数字值来标识单元格,即基于1的行号和列号。
看起来你的代码的唯一问题是你没有指定一个范围/工作表对象来调用.Cells()
因此:

$table.Range(
  $table.Cells($StartZeile, 1),
  $table.Cells($LetzteZeile, $LetzteSpalte)
)

你可能认为$table可以在.Cells()调用之前被省略,因为**允许你通过With语句这样做,比如下面的例子,其中在块内的属性访问/方法调用中操作的对象是由With操作数 * 隐含 * 的:

' !! Works in VBA only.
With Worksheets(1) 
    .Range(.Cells(1, 1), _ 
           .Cells(10, 10))
End With

但是,PowerShell没有 * 等效的构造。

q5iwbnjs

q5iwbnjs2#

这是wath真正的工作:

$exBefRange = ($table.Cells.Item($Step.Row, 6).address($false,$false) + ":" + $table.Cells.Item($Step.Row, ($LetzteSpalte-9)).address($false,$false))

但也许,很多方法去罗马。

相关问题