Excel VBAdynamic表引用
我有一个名为“组”的Excel表,其中的标题是组名称。 在下面的列中,组名称是该特定组的成员。
在另一个表中,我有第一列中的所有成员名称和第一行中的组名称。 我想检查每个成员名称是否在上面的组中。
要检查蒂姆是否在“伙计”组中,我可以使用公式:
=if( countif( groups[guys];"Tim")>0;"yes";"no")
但我有一个命令button“添加组”,它打开一个用户表单,我可以进入一个新的组+成员。 新组的名称被input到文本框1中。 组和成员被添加到组表中。
我想要更新第二张表。 我想要做的是这样的:
With Worksheets("Overview").ListObjects("PersonIsInGroupTab") .ListColumns.Add Position:=3 .HeaderRowRange(3).Value = TextBox1.Value .DataBodyRange(1, 3).formula= "=if( countif( groups[textbox1.value];""Tim"")>0;""yes"",""no"")" End With
不幸的是,这是行不通的。
textbox1.value
是新组的名称(也添加到组选项卡)。
有什么办法可以使这项工作?
编辑:我试过另一种方法,但也没有工作,但可能有助于回答这个问题。 在检查某个人是否属于某个组的成员的表中,我默认启动一个组。 并手动input公式
=if(countif(groups[guys],"Tim")>0,"yes","no")
进入单元格(在我的情况J4)。 当我使用用户表单添加一个“gals”组时,我在表格中得到第二列“gals”。 当我手动将公式从[guys]单元格拖到[gals]单元格(K4)时,它的工作方式与我想要的一样。 我得到公式
=if(countif(groups[gals],"Tim)>0,"yes","no")
在gals单元格(K4)所以我想我可以在VBA中做这个自动填充作为“添加组”例程的一部分。 这是我使用的代码:
Range("groups[guys]").Select Selection.AutoFill Destination:=Range("J4:K4"), Type:=xlFillDefault
我把这个代码从自动填充logging为一个macros。 但是当我运行它时,K4中的公式与J4中的公式一样,与群组[伙计]而不是群组[伙计]。 我不能做Destination:= Range(“groups [[guys]:[gals]]”),因为我希望它可以与任何groupname一起使用,不仅是gals。
我能够通过写一个VBA函数而不是使用countif来解决这个问题。 function是:
Function IsInGroup(group, member As String) As Boolean For Each Item In group If Item = member Then IsInGroup = True Exit Function End If Next Item IsInGroup = False End Function
我这样使用它:
temparray = ActiveSheet.ListObjects("groups").ListColumns(2).Range With Worksheets("Overview").ListObjects("PersonIsInGroupTab") tempmember = .DataBodyRange(1, 1).Value .ListColumns.Add Position:=3 .HeaderRowRange(3).Value = TextBox1.Value .DataBodyRange(1, 3).Value = IsInGroup(temparray, tempmember) End With
- Excel 2013 – 当隐藏一个工作簿时closures多个工作簿时出现问题
- exception(HRESULT:0x800AC472)使用Excel.Worksheet.Select时调用Excel.Workbook.SaveAs
- Excel VBA将XL-2007已启用macros的工作簿复制为不带macros的excel-2003文件
- C#,Excel,OleDB,插入语句不起作用
- 与Excel连接的SSIS错误
- VBA错误:这个键已经与这个集合的元素相关联
- 如何使用Microsoft Graph在Excel中更新表的特定行?
- 取消列表后删除Excel ListObject
- Excel VBA:如果列中的值匹配,则将值从表格1插入到表格2