簡體   English   中英

按行 NUMBER 和列 LETTER 獲取 Excel 單元格

[英]Get Excel Cell by row NUMBER and column LETTER

在 VB.NET 中,使用 Interop.Excel,我需要根據行號和列字母訪問一個單元格。 我試試運氣...

pages.title = DirectCast(wksht.Cells(rows, "D"), Excel.Range).Value

由於參數采用 object 類型,我認為這可能可行,但沒有運氣。 我還想過將每個字母枚舉為一個數字,但電子表格中的列並不正常。 意思是,他們不是

AB C DEFG

他們其實...

AB C DET AZ

我不知道這是否會影響列的編號。 這個問題應該很明顯,但只是重申一下,如何根據行號和列字母獲取單元格?

對於單個單元格:

wksht.Range(colLetter + rows)

MSDN 鏈接

使用字符的 ASCII 值作為“基礎”系統

“A” = 1 = A 的 ASCII 值 - A 的 ASCII 值 + 1

"AA" = 27 = (A 的 ASCII 值 - A 的 ASCII 值 +1)* 26 + (A 的 ASCII 值 - A 的 ASCII 值 +1)

"BA" = (B 的 ASCII 值 - A 的 ASCII 值 + 1) * 26 + (A 的 ASCII 值 - A 的 ASCII 值 + 1)

等等,乘以 26 的(數字 -1)的冪

Function GetIndex(ByVal str As String) As Integer
        Dim i As Integer
        str = str.ToUpper()
        GetIndex = 0
        For i = str.Length - 1 To 0 Step -1
            GetIndex = GetIndex + (26 ^ (str.Length - i - 1)) * (Asc(str(i)) - Asc("A") + 1)
        Next
End Function

嘗試這個:

Dim oWorksheet as Worksheet : Set oWorksheet = ActiveSheet

Dim iRow As Integer : iRow = 10
Dim strColumn as String : strColumn = "AZ"

Dim oCell as Range
Set oCell = oWorksheet.Cells(iRow, 1).Range(strColumn & "1")

oWorksheet.Cells(iRow, 1)為您提供所需行上的第一個單元格,並且.Range(strColumn & "1")為您提供基於列字母的水平偏移量。


編輯:請參閱 Lance Roberts 的答案以獲得更簡單的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM