宏excel:粘贴值并更新2个单元格

时间:2017-08-28 08:26:33

标签: excel vba excel-vba

我为新手道歉,因为我对这个概念有困难。我真的不知道从哪里开始。

我只需要在Sheet2中使用'更新按钮'做以下事情:

在sheet1中,此信息将来自不同的团队负责人,因为示例'座位号中显示了重复或甚至重复的记录。 1.2'可能会发生。

在sheet2中,在座位编号'下面,这是不变的,永远不会改变(作为我对其他Pivot和查找代码的参考)

在sheet2列中,在'用户1'下,代码将粘贴检测到的第一个值;在' User2'下,代码将粘贴检测到的第二个值;在取消分配时,代码将粘贴检测到的第3个值

在状态下的sheet2列中,如果只有1位用户,则会显示Solo,共享'如果有2个用户和'空缺'如果没有用户。

注意:每个座位号仅允许两个用户。

Simplified data for seat plan with sharing

希望你能帮助我。非常感谢你

2 个答案:

答案 0 :(得分:0)

您不需要为此使用宏。在用户1 列中使用以下内容:

= IF(ISERROR(VLOOKUP(Sheet2的A2,工作表Sheet $ A $ 2:!!$ B $ 50,2,0)),"",VLOOKUP(Sheet 2中A2,工作表Sheet $ A $ 2 :$ B $ 50,2,0)),

其中50替换为您的行数。

用户2 中使用此:

= IF(SUMIF(Sheet 1中$ A $ 2:!!$ A $ 50 Sheet2的A2)→1,IF(ISERROR(VLOOKUP(Sheet2的A2,OFFSET(Sheet 1中$ A $ 2,MATCH(Sheet2的A2, !Sheet 1中$ A $ 2:$ A $ 50,0),0,50-MATCH(Sheet2的A2,工作表Sheet $ A $ 2:!$ A $ 50,0),2),2,0)),"& !!!#34;,VLOOKUP(Sheet 2中A2,OFFSET(Sheet 1中$ A $ 2,MATCH(Sheet 2中A2,工作表Sheet $ A $ 2:$ A $ 50,0),0,7-MATCH(Sheet2的A2,工作表Sheet $ A $ 2:$ A $ 50,0),2),2,0)),"&#34)

并再次将50替换为您的行数。

状态列中,将 IF SUMIF 一起使用。

取消分配列中,在第一列中使用vlookup,但从下到上。有很多关于它的文章。别忘了在开始时使用,这将检查是否有3个座位ID。

答案 1 :(得分:0)

除非你坚持这样做,否则不需要VBA:

User1 专栏:

=IFERROR(IF(VLOOKUP(A2,Sheet1!$A$2:$B$9,2,0)=0,"",VLOOKUP(A2,Sheet1!$A$2:$B$9,2,0)),"")

User2 列(数组公式,同时按 Ctrl + Shift + Enter 键):

=IFERROR(INDEX(Sheet1!$B$2:$B$9,SMALL(IF($A2=Sheet1!$A$2:$A$9,ROW(Sheet1!$A$2:$A$9)-ROW($A$2)+1),2)),"")

状态列:

=IF(COUNT(B2:C2)=0,"Vacant",IF(COUNT(B2:C2)=1,"Solo","Sharing"))

取消分配列(数组公式,同时按 Ctrl + Shift + Enter 键):

=IFERROR(INDEX(Sheet1!$B$2:$B$9,SMALL(IF($A2=Sheet1!$A$2:$A$9,ROW(Sheet1!$A$2:$A$9)-ROW($A$2)+1),3)),"")

希望这有帮助。