如何在VBA中创建向量?

如何在VBA中创建向量?,vba,excel,ms-word,Vba,Excel,Ms Word,我有一个小问题,需要在excelvba中创建一个向量 我有下面的场景 str=Sheets("Indata").Range("$C$12") Vector= str 例如,如果C12中的单元格为11,则我需要以下输出: Vector= "1 2 3 4 5 6 7 8 9 10 11" 考虑: Public Function Vector(rIn As Range) As String Dim N As Long N = rIn(1).Value Vector =

我有一个小问题,需要在
excelvba
中创建一个向量

我有下面的场景

str=Sheets("Indata").Range("$C$12")

Vector= str
例如,如果
C12
中的单元格为11,则我需要以下输出:

Vector= "1 2 3 4 5 6 7 8 9 10 11"
考虑:

Public Function Vector(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    Vector = "1"
    For i = 2 To N
        Vector = Vector & " " & i
    Next i
End Function
编辑#1:

要获取字母向量,请使用:

Public Function VectorA(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    VectorA = "A"
    For i = 2 To N
        VectorA = VectorA & " " & Chr(64 + i)
    Next i
End Function
考虑:

Public Function Vector(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    Vector = "1"
    For i = 2 To N
        Vector = Vector & " " & i
    Next i
End Function
编辑#1:

要获取字母向量,请使用:

Public Function VectorA(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    VectorA = "A"
    For i = 2 To N
        VectorA = VectorA & " " & Chr(64 + i)
    Next i
End Function
考虑:

Public Function Vector(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    Vector = "1"
    For i = 2 To N
        Vector = Vector & " " & i
    Next i
End Function
编辑#1:

要获取字母向量,请使用:

Public Function VectorA(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    VectorA = "A"
    For i = 2 To N
        VectorA = VectorA & " " & Chr(64 + i)
    Next i
End Function
考虑:

Public Function Vector(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    Vector = "1"
    For i = 2 To N
        Vector = Vector & " " & i
    Next i
End Function
编辑#1:

要获取字母向量,请使用:

Public Function VectorA(rIn As Range) As String
    Dim N As Long
    N = rIn(1).Value
    VectorA = "A"
    For i = 2 To N
        VectorA = VectorA & " " & Chr(64 + i)
    Next i
End Function

数字

  Sub test()
    Dim str As String
    str = Join(Application.Transpose(Evaluate("ROW(A1:A" & Range("C12").Value2 & ")")), " ")
    Debug.Print str
  End Sub
字母

Sub test2()
    Dim str As String, varr, lCnt As Long
    varr = Application.Transpose(Evaluate("64 + ROW(A1:A" & Range("C12").Value2 & ")"))
    For lCnt = LBound(varr, 1) To UBound(varr, 1)
        str = str & " " & Chr(CLng(varr(lCnt)))
    Next lCnt
    Debug.Print str
End Sub
更新

字母的循环避免符

Sub test3()
     Dim str As String
    Const ALPHABET = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    str = IIf(CLng(Range("C12").Value2) <= 26, _ 
        Mid(ALPHABET, 1, 1 + (2 *CLng(Range("C12").Value2 - 1))), "Error")
    Debug.Print str
End Sub
子测试3()
作为字符串的Dim str
Const ALPHABET=“A B C D E F G H I J K L M N O P Q R S T U V W X Y Z”

str=IIf(CLng(范围(“C12”).Value2)数字

  Sub test()
    Dim str As String
    str = Join(Application.Transpose(Evaluate("ROW(A1:A" & Range("C12").Value2 & ")")), " ")
    Debug.Print str
  End Sub
字母

Sub test2()
    Dim str As String, varr, lCnt As Long
    varr = Application.Transpose(Evaluate("64 + ROW(A1:A" & Range("C12").Value2 & ")"))
    For lCnt = LBound(varr, 1) To UBound(varr, 1)
        str = str & " " & Chr(CLng(varr(lCnt)))
    Next lCnt
    Debug.Print str
End Sub
更新

字母的循环避免符

Sub test3()
     Dim str As String
    Const ALPHABET = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    str = IIf(CLng(Range("C12").Value2) <= 26, _ 
        Mid(ALPHABET, 1, 1 + (2 *CLng(Range("C12").Value2 - 1))), "Error")
    Debug.Print str
End Sub
子测试3()
作为字符串的Dim str
Const ALPHABET=“A B C D E F G H I J K L M N O P Q R S T U V W X Y Z”

str=IIf(CLng(范围(“C12”).Value2)数字

  Sub test()
    Dim str As String
    str = Join(Application.Transpose(Evaluate("ROW(A1:A" & Range("C12").Value2 & ")")), " ")
    Debug.Print str
  End Sub
字母

Sub test2()
    Dim str As String, varr, lCnt As Long
    varr = Application.Transpose(Evaluate("64 + ROW(A1:A" & Range("C12").Value2 & ")"))
    For lCnt = LBound(varr, 1) To UBound(varr, 1)
        str = str & " " & Chr(CLng(varr(lCnt)))
    Next lCnt
    Debug.Print str
End Sub
更新

字母的循环避免符

Sub test3()
     Dim str As String
    Const ALPHABET = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    str = IIf(CLng(Range("C12").Value2) <= 26, _ 
        Mid(ALPHABET, 1, 1 + (2 *CLng(Range("C12").Value2 - 1))), "Error")
    Debug.Print str
End Sub
子测试3()
作为字符串的Dim str
Const ALPHABET=“A B C D E F G H I J K L M N O P Q R S T U V W X Y Z”

str=IIf(CLng(范围(“C12”).Value2)数字

  Sub test()
    Dim str As String
    str = Join(Application.Transpose(Evaluate("ROW(A1:A" & Range("C12").Value2 & ")")), " ")
    Debug.Print str
  End Sub
字母

Sub test2()
    Dim str As String, varr, lCnt As Long
    varr = Application.Transpose(Evaluate("64 + ROW(A1:A" & Range("C12").Value2 & ")"))
    For lCnt = LBound(varr, 1) To UBound(varr, 1)
        str = str & " " & Chr(CLng(varr(lCnt)))
    Next lCnt
    Debug.Print str
End Sub
更新

字母的循环避免符

Sub test3()
     Dim str As String
    Const ALPHABET = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
    str = IIf(CLng(Range("C12").Value2) <= 26, _ 
        Mid(ALPHABET, 1, 1 + (2 *CLng(Range("C12").Value2 - 1))), "Error")
    Debug.Print str
End Sub
子测试3()
作为字符串的Dim str
Const ALPHABET=“A B C D E F G H I J K L M N O P Q R S T U V W X Y Z”
str=IIf(CLng(范围(“C12”).Value2)----解决方案----

以下是上述问题的解决方案:

Dim N As Long
    N = Sheets("Indata").Range("$C$12").Value
    vector = "1"
    For i = 2 To N
        vector = vector & " " & i
    Next i
它的作用是从Sheets(“Indata”).Range(“C$12”)值中获取一个值,比如11,并返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----使用字母而不是数字的代码-----

M和字符串一样长,矢量和字符串一样长

M=板材(“Indata”).范围($C$13”).值

vectorA=Join(求值(“转置(字符(行(65:“&M+64&”)”)))

它所做的是从Sheets(“Indata”).Range(“C$13”)值中获取一个值,比如说11,然后返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----解决方案----

以下是上述问题的解决方案:

Dim N As Long
    N = Sheets("Indata").Range("$C$12").Value
    vector = "1"
    For i = 2 To N
        vector = vector & " " & i
    Next i
它的作用是从Sheets(“Indata”).Range(“C$12”)值中获取一个值,比如11,并返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----使用字母而不是数字的代码-----

M和字符串一样长,矢量和字符串一样长

M=板材(“Indata”).范围($C$13”).值

vectorA=Join(求值(“转置(字符(行(65:“&M+64&”)”)))

它所做的是从Sheets(“Indata”).Range(“C$13”)值中获取一个值,比如说11,然后返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----解决方案----

以下是上述问题的解决方案:

Dim N As Long
    N = Sheets("Indata").Range("$C$12").Value
    vector = "1"
    For i = 2 To N
        vector = vector & " " & i
    Next i
它的作用是从Sheets(“Indata”).Range(“C$12”)值中获取一个值,比如11,并返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----使用字母而不是数字的代码-----

M和字符串一样长,矢量和字符串一样长

M=板材(“Indata”).范围($C$13”).值

vectorA=Join(求值(“转置(字符(行(65:“&M+64&”)”)))

它所做的是从Sheets(“Indata”).Range(“C$13”)值中获取一个值,比如说11,然后返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----解决方案----

以下是上述问题的解决方案:

Dim N As Long
    N = Sheets("Indata").Range("$C$12").Value
    vector = "1"
    For i = 2 To N
        vector = vector & " " & i
    Next i
它的作用是从Sheets(“Indata”).Range(“C$12”)值中获取一个值,比如11,并返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"
----使用字母而不是数字的代码-----

M和字符串一样长,矢量和字符串一样长

M=板材(“Indata”).范围($C$13”).值

vectorA=Join(求值(“转置(字符(行(65:“&M+64&”)”)))

它所做的是从Sheets(“Indata”).Range(“C$13”)值中获取一个值,比如说11,然后返回一个向量:

vector="1 2 3 4 5 6 7 8 9 10 11"
vector="A B C D E F G H I J K"

我现在设法解决了它。谢谢你的帮助。还有一个问题,如果单元格C12中的数字是11,但我希望输出是:Vector=“A B C D E F G H I J K”我该怎么做?选择一个单元格并输入:=Vector(Indata!C12)@RinorM以获取字母向量,请参阅我的编辑#1。我尝试了它,但出现了一条错误消息,上面写着“当前作用域中的重复声明”,然后突出显示“N As Long”确保您使用了VectorA并且没有重复VectorI现在设法修复了它。感谢您的帮助。还有一个问题,如果单元格C12中的数字是11,但我希望输出为:Vector=“A B C D E F G H I J K”我该怎么做?选择一个单元格并输入:=Vector(Indata!C12)@RinorM若要获取字母向量,请参阅我的编辑#1。我尝试了它,但出现了一条错误消息,上面写着“当前范围内重复声明”,然后突出显示“N尽可能长”“请确保您使用了VectorA,并且没有重复使用VectorI。感谢您的帮助。还有一个问题,如果单元格C12中的数字是11,但我希望输出为:Vector=“A B C D E F G H I J K”我该怎么做?选择一个单元格并输入:=Vector(Indata!C12)@RinorM要获取字母向量,请参见我的编辑#1。我尝试过,但出现了一条错误消息,上面写着“当前范围内重复声明”,然后突出显示“N尽可能长”请确保您使用了VectorA,并且没有重复使用VectorI。感谢您的帮助。还有一个问题,如果单元格C12中的数字是11,但我希望输出为:Vector=“A B C D E F G H I J K”我如何才能做到这一点?选择一个单元格并输入:=Vector(Indata!C12)@RinorM要获取字母向量,请参阅我的编辑#1。我尝试过,但出现了一条错误消息,上面写着“当前范围内重复声明”,然后突出显示“N,只要”确保您使用了VectorA,并且没有重复VectorA如果您有答案,请将其作为answe提交