1

私はExcelスプレッドシートからいくつかのデータを抽出するためのvbsスクリプトを書いています。現在関数を使用しています:

objSheet.Cells(rowNum, colNum).Value

セルの値を取得するために、これにより列番号を計算できます。たとえば、3を追加して3つの列間を移動できます。しかし、場合によっては、文字で取得する列を指定したいことがあります。

objSheet.Cells(4, E).Value

したがって、列の文字を数値E=>5に変換するvbs関数を作成する必要があります。26列を超える幅のスプレッドシートを処理できる必要があります。

私はインターネットとSOで反対のことをするための多くの関数を見てきましたが、この方法で変換を行うための多くは見つかりませんでした。

ありがとう

4

2 に答える 2

3

このコードはExcelなしで実行されます。

Function ColNum(strCol As String) As Integer
    Dim i As Integer, col As Integer

    For i = Len(strCol) To 1 Step -1
        col = col + (Asc(Mid(strCol, i, 1)) - 64) * (26 ^ (i - 1))
    Next
    ColNum = col
End Function

または、Excelでは、次のように使用できます。

Function ColNum(strCol As String) As Integer
    ColNum = Range(strCol & "1").Column
End Function
于 2013-03-26T12:50:37.840 に答える
0

vbaなし:

列番号を文字に変換するには、次の数式を入力します。

=LEFT(ADDRESS(1,3,4)) (returns the column letter for the cell C1=C)

ただし、列Cの前に列を挿入すると数値3が4に変更されないため、これはまだ満足のいくものではありません。修正方法は次のとおりです。

=LEFT(ADDRESS(1,COLUMN(C1),4))

お役に立てれば。

これは、たとえばセル範囲を指定する文字列を作成する必要がある場合に特に役立ちます。

于 2015-01-26T16:54:36.153 に答える