如何从行,列到Excel A1表示法?

给定一个行和列(As Long),如何在Excel(2007)中使用VBA确定电子表格符号:

例如:

(R, C) = (1, 1) -> "A1" (R, C) = (2, 1) -> "A2" (R, C) = (2, 2) -> "B2" 

因此,如果你有一个function:

 Function CellRef(R As Long, C As Long) As String 

其中提供的function,你可以做这样的事情:

 Worksheet.Range(CellRef(R1, C1) + ":" + CellRef(R2, C2)).Copy 

有一点背景,以防万一这是错误的做法:这样做的目的是,我有一张表格描述其他工作表的主表:

 WorksheetName, Range etc.... 

此主表单控制表单上的转换,但范围值显然是Excel表示法,以便日后在引用范围时使用。 然而,pipe理这个表的一个例程,报告exception并确保一致性确实从行和列中的其他表获取事物,因此例如它获得行和列,它知道什么是开始和结束。

这里是我最后的function:

 Private Function CellRef(R As Long, C As Long) As String CellRef = vbNullString On Error GoTo HandleError: CellRef = Replace(Mid(Application.ConvertFormula("=R" & R & "C" & C, XlReferenceStyle.xlR1C1, XlReferenceStyle.xlA1), 2), "$", "") Exit Function HandleError: End Function 

也许这是你在找什么?

列号到字母

列数字字母

好的东西在评论中

http://support.microsoft.com/kb/833402是将数字转换为字母(从1,1转换为A1的棘手部分)的问题的Microsoft解决scheme。 这实际上在Excel的其他应用程序工作,因为它依赖于基本的VBA的beuaty。

然后你添加:

 ' Converts row and column index to Excel notation, ie (3, 2) to B3. Private Function generateExcelNotation(row As Integer, column As Integer) As String ' error handling of your choice, I go for returning an empty string If (row < 1 Or column < 1) Then generateExcelNotation = "" Exit Function End If generateExcelNotation = ConvertToLetter(column) & row End Function