Vba 使用输入框存储唯一值

Vba 使用输入框存储唯一值,vba,excel,Vba,Excel,我正在处理一些数据,希望从中提取列中的唯一值,并将它们存储在数组中,然后将其用于其他计算 Sub A_Unique_B() Dim X Dim objDict As Object Dim lngRow As Long Set objDict = CreateObject("Scripting.Dictionary") X = Application.Transpose(Range([E1], Cells(Rows.Count, "E").End(xlUp))) For lngRow = 1

我正在处理一些数据,希望从中提取列中的唯一值,并将它们存储在数组中,然后将其用于其他计算

Sub A_Unique_B()
Dim X
Dim objDict As Object
Dim lngRow As Long

Set objDict = CreateObject("Scripting.Dictionary")
X = Application.Transpose(Range([E1], Cells(Rows.Count, "E").End(xlUp)))

For lngRow = 1 To UBound(X, 1)
objDict(X(lngRow)) = 1
Next
Range("K1:K" & objDict.Count) = Application.Transpose(objDict.keys)
End Sub

现在,我希望代码使用一个输入框来获取输入,该输入框中的列用于搜索唯一值(此处为[E1]),并存储输出(“此处为K1:K”)。

添加带有变量的
输入框
代码以保存其值:

Dim col As String
Dim output_col As String
col = InputBox("Type the column letter to search in", "Data Input")
output_col = InputBox("Type the column letter to write results to", "Data Input")
并添加一些逻辑,例如,如果列字母长度不是
0
,则处理

Sub A_Unique_B()
Dim X
Dim objDict As Object
Dim lngRow As Long

Dim col As String
Dim output_col As String
col = InputBox("Type the column letter to search in", "Data Input")
output_col = InputBox("Type the column letter to write results to", "Data Input")
If Len(col) > 0 And Len(output_col) > 0 Then
  Set objDict = CreateObject("Scripting.Dictionary")
  X = Application.Transpose(Range(col & CStr(1), Cells(Rows.Count, col).End(xlUp)))
  For lngRow = 1 To UBound(X, 1)
    objDict(X(lngRow)) = 1
  Next
  Range(output_col & CStr(1) & ":" & output_col & objDict.Count) = Application.Transpose(objDict.keys)
End If
End Sub

谢谢。它工作得很好。我是excel vba的新手。所以,如果你不介意的话,你能告诉我你所说的过程是什么意思吗?我的意思是执行换位,等等。继续执行代码。非常感谢。如果你能帮我,我还有一个问题。假设我使用inputbox选择要在“K”列中发布的结果,我可以使用output\u col和Cstr在我的输出的下一列中进行一些计算吗?是的,您可以使用
Range.Offset()
Range(output\u col&Cstr(1)&“&output\u col&objDict.Count).Offset(columnfset:=1)
-它将参考右侧的下一列。或者使用
-1
开始向左侧的列添加数据。不,您不能将“K”和
1相加得到“L”。你应该使用。