Excel VBA将单元格名称转换为坐标
比方说,我有这个string代表一个单元格: A2
。
(2, 1)
?我应该怎么做?
没有VBA
假设C2
单元格包含string"A2"
。
然后
-
=INDIRECT(C2)
返回对A2
引用 -
=ROW(INDIRECT(C2))
返回行号2
-
=COLUMN(INDIRECT(C2))
返回列号 –1
-
="(" & ROW(INDIRECT(C2)) & "; " & COLUMN(INDIRECT(C2)) & ")"
以格式(x; y)
–(2; 1)
UPD:
如果您使用的是UDF,请将您的参数types从String
更改为Range
:
Function GetData(Cell As Range) MsgBox "My row is " & Cell.Row MsgBox "My column is " & Cell.Column End Function
如果你从工作表调用这个UDF,像这样: =GetData(A2)
,msg框会popup:
- “我排2”
- “我的专栏是1”
您可以使用Range对象的Column和Row属性:
Range("A2").Row Range("A2").Column
Examlpe:
Sub test() Dim x As String x = "A2" MsgBox GetRow(x) & " " & GetColumn(x) End Sub Function GetRow(Cell As String) GetRow = Range(Cell).Row End Function Function GetColumn(Cell As String) GetColumn = Range(Cell).Column End Function