Excel 组合框项目比较和匹配-VBA
我有两张excel表格:一张包含源数据,另一张包含目标数据。我已经创建了包含组合框(dropdownlists)和导入按钮的userform 有些组合框包含源工作表第一行的名称,有些组合框包含目标工作表第一行的名称 我想比较组合框中的名称(源名称和目标名称),如果它们相等,则进行匹配 当我点击导入按钮时,源excel工作表中的所有内容都将导入到目标excel工作表的正确位置。 我该怎么做 我试过这个密码Excel 组合框项目比较和匹配-VBA,excel,vba,Excel,Vba,我有两张excel表格:一张包含源数据,另一张包含目标数据。我已经创建了包含组合框(dropdownlists)和导入按钮的userform 有些组合框包含源工作表第一行的名称,有些组合框包含目标工作表第一行的名称 我想比较组合框中的名称(源名称和目标名称),如果它们相等,则进行匹配 当我点击导入按钮时,源excel工作表中的所有内容都将导入到目标excel工作表的正确位置。 我该怎么做 我试过这个密码 dim sh =ThisWorkbook.Sheets("sourcedata&q
dim sh =ThisWorkbook.Sheets("sourcedata")
dim sh2= ThisWorkbook.Sheets("goaldata")
dim i,j as integer
for i = 1 to Application.WorksheetFunction.CountA(sh.Range("1:1"))
for j = 1 to Application.WorksheetFunction.CountA(sh2.Range("1:1"))
if sh.cells(1,i).value = sh2.cells(1,j).value then
Me.comboBox1.value = sh.cells(1,i)
Me.comboBox2.value = sh2.cells(1,j)
Me.comboBox3.value = sh.cells(1,i)
Me.comboBox4.value = sh.cells(1,j)
end if
next
next
end sub
问题是我在所有的组合框中通常得到相同的值。
我想在所有的组合框中得到两张表中的行的名称
例如,我有源工作表的行名称:日期、事件和地点
目标工作表中的行名称为:仅日期和事件
例如:在combobox1.value=Date中也应该在comboBox2.value=Date中(因为日期在两张表中都存在)
Combox3.value=事件,Combox4.value应为事件
我想插入Combobox5.value=place(Combobox5包含仅存在于一张工作表中的名称,它们没有任何匹配项)
有什么帮助吗?我想我理解了3个组合框部分,但不完全理解“应该复制哪些数据”部分,所以让我们继续讨论组合框部分 关于代码的一些注释:
- 当您在dim中未提及数据类型时,默认情况下变量在variant type=>中,例如dim i=>与dim i as variant相同。虽然不总是一个问题,但它可能导致意外行为李>
- “combobox.value”用于获取combobox的选定值,而不是向其中添加项目。看看你的描述和代码,我想你是有意添加项目的
Option Explicit
Sub UserForm_Initialize()
Dim arr, arr2
arr = Sheet1.Range("A1:c1").Value2
Me.ComboBox1.List = Application.WorksheetFunction.Transpose(arr)
arr2 = Sheet2.Range("A1:c1").Value2
Me.ComboBox2.List = Application.WorksheetFunction.Transpose(arr2)
Dim i As Long, arr3, ii As Long: ii = 1
ReDim arr3(1 To 1, 1 To UBound(arr, 2))
For i = 1 To UBound(arr, 2)
If arr(1, i) <> arr2(1, i) Then
arr3(1, ii) = arr(1, i)
ii = ii + 1
End If
Next i
Me.ComboBox3.List = Application.WorksheetFunction.Transpose(arr3)
End Sub
选项显式
子用户表单_初始化()
暗arr,arr2
arr=表1.范围(“A1:c1”).值2
Me.ComboBox1.List=Application.WorksheetFunction.Transpose(arr)
arr2=表2.范围(“A1:c1”).值2
Me.ComboBox2.List=Application.WorksheetFunction.Transpose(arr2)
尺寸i等长,arr3,ii等长:ii=1
重拨arr3(1对1,1对UBound(arr,2))
对于i=1至UBound(arr,2)
如果arr(1,i)arr2(1,i),那么
arr3(1,ii)=arr(1,i)
ii=ii+1
如果结束
接下来我
Me.ComboBox3.List=Application.WorksheetFunction.Transpose(arr3)
端接头
看一看,让我知道它是怎么回事。你应该发布你尝试过的代码。我已经发布了代码。你知道吗?