如何在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提交