11

行と列 (As Long) が与えられた場合、Excel (2007) で VBA を使用してスプレッドシートの表記法を決定する方法は次のとおりです。

例えば:

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

したがって、関数がある場合:

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

その機能を提供した場合、次のようなことができます。

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

これが間違ったアプローチである場合に備えて、少し背景を説明します。これの目的は、テーブル内の他のワークシートを説明するマスター シートを作成することです。

WorksheetName, Range etc....

このマスター シートは、シートの変換を制御しますが、範囲の値は、後で範囲を参照する際に便利なように、明らかに Excel 表記になっています。ただし、このテーブルを管理し、例外を報告し、一貫性を確保するためのルーチンは、行と列の他のシートから実際に取得するため、たとえば、何かが開始および終了することを認識している行と列を取得します。

これが私が最終的に得た関数です:

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
4

5 に答える 5

4

多分これはあなたが探しているものですか?

于 2009-07-11T21:13:24.703 に答える
3

文字への列番号

数字への列文字

良いものはコメントにあります

于 2009-07-12T13:46:06.983 に答える
1

http://support.microsoft.com/kb/833402は、数字を文字に変換する際の問題 (1,1 から A1 への変換のトリッキーな部分) に対する Microsoft のソリューションです。これは、基本的な VBA に依存しているため、実際には Excel 以外のアプリケーションで動作するという利点があります。

次に、次を追加します。

' 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
于 2014-03-12T17:59:01.130 に答える