LoginSignup
0
0

More than 3 years have passed since last update.

RANGE関数を拡張する。

Last updated at Posted at 2020-01-29

Range関数は、テーブル名、範囲、スピル範囲演算子等の文字列を引数として使えるので、なにかと便利です。
しかし、Range("M01N_[番号,O,W]")というように、列を抜き出してテーブルを作成することは出来ません。
Range("M01N_[番号]") のような一列や、Range("M01N_[[番号]:[O]]")のように列の並びが連続している必要があります。
それなので、関数Range_として再定義しました。

Function Range_(R, Optional S = "")
    On Error Resume Next

    If TS_(R) Then
        If InStr(R, ",") > 0 And InStr(R, "[") > 0 And InStr(R, "]") = Len(R) Then
            A = Split(Left(R, Len(R) - 1), "[")
            B = Split(A(1), ",")
            A = A(0)

            M = Range(A).Rows.Count
            N = UBound(B) + 1

            ReDim S(0 To M, 1 To N)

            For J = 1 To N
                S(0, J) = B(J - 1)         
                R = CC(A, "[", B(J - 1), "]")
                For I = 1 To M
                    S(I, J) = DI(R, I)
                Next I
            Next J
        Else
            S = Range(R)
        End If
    Else
        S = R
    End If
    Range_ = S
End Function

(A1) =Range_("M01N_[番号,O,W]") の結果は下記。書式は適当に変えています。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0