0

文字列配列があり、配列の各スロットには、「B:J」「k:W」「AC:AG」などの文字列形式の「列の範囲」があります

メソッドには、「C」などの列名である文字列が渡されます

「C」が「B:J」の中にあるかどうかを検索する必要があります。

したがって、基本的には、「C」が「BCDEFGHIJ」にあるかどうか、およびループから抜けているかどうかを確認する必要があります

しかし、「A」と入力すると、配列内の次のスロットに移動するはずです。

感謝

4

2 に答える 2

0

あなたは見てみるかもしれません

列番号 (例: 127) を Excel の列 (例: AA) に変換する方法

sheet.Application.ActiveCell.Column //for current selected column
int col=sheet.Range("A").Column; // for any choosen column

現在の列番号を返します。範囲 B:J に同じことを適用し、J (10) > C (3) > B ( 2) かどうかを確認します。

その範囲内にあると言えます。

私があなたに与えたリンクを使って、この機能を逆にする必要がある場合。

ConvertToAlphaColumnReferenceFromInteger(sheet.Application.ActiveCell.Column)

C#/.NET で完了

于 2013-03-28T13:40:15.060 に答える
0

この関数は、単一の列が範囲に含まれる配列内の位置を返します。Intersect プロパティを使用して、2 つの範囲が交差するかどうかを判断します。

Function ArrayPos(sColLetter As String, vaRanges As Variant) As Long

    Dim i As Long
    Dim sh As Worksheet
    Dim lReturn As Long

    Set sh = Sheet1

    For i = LBound(vaRanges) To UBound(vaRanges)
        If Not Intersect(sh.Columns(sColLetter), sh.Columns(vaRanges(i))) Is Nothing Then
            lReturn = i
            Exit For
        End If
    Next i

    ArrayPos = lReturn

End Function

たとえば、イミディエイト ウィンドウから、このように使用されます。

?arraypos("M",array("B:J","K:W"))
 1 

引数を範囲に変換できることを確認するために、いくつかのエラー チェックを追加する必要がありますが、それはお任せします。範囲文字列をコロンで分割し、文字の ASCII 値を比較することで、Range オブジェクトなしでこれを行うことができます。

于 2013-03-28T12:45:26.050 に答える