我有一个名为“groups”的Excel表,其中标题是组名。在下面的列中,组名称是该特定组的成员。
在另一个表中,我在第一列中有所有成员名,第一行中有组名。我想检查每个成员名称是否在上面的组中。
为了检查Tim是否属于“伙伴”组,我可以使用以下公式:
=if( countif( groups[guys];"Tim")>0;"yes";"no")
但我有一个命令按钮“添加组”,它打开一个用户表单,我可以在其中输入一个新的组+成员。新组的名称输入到textbox1中。组和成员将添加到组表中。
我希望第二张表也能更新。我想做的是这样的事情:
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
是新组的名称(也已添加到“组”选项卡中)。
我有办法让这项工作成功吗?
编辑: 我尝试了另一种方法,但也没有用,但可能有助于回答这个问题。 在检查某个人是否是某个组成员的表中,我默认启动一个组。并手动输入公式
=if(countif(groups[guys],"Tim")>0,"yes","no")
进入单元格(在我的情况下是J4)。当我使用userform添加组“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
我通过将自动填充录制为宏来获取此代码。但是当我运行它时,K4中的公式与J4中的公式一样,组[伙伴]而不是组[gals]。 我不能做Destination:= Range(“groups [[guys]:[gals]]”)因为我希望它可以使用任何组名而不仅仅是gals。
答案 0 :(得分:0)
我能够通过编写VBA函数而不是使用countif来解决问题。 功能是:
rid
我这样使用它:
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