我正在努力与M $ Excel一起努力创建一个公式来将结果复制到另一张表格。我想我可能需要VBA吧。
我有三张纸。一个名为学生,一个名为天,另一个名为时间表。
学生列A是" 名称"和B列是一个下拉列表" Day "本周休假作为选择。
我尝试创建一个查看B列并确定选择了哪一天的公式然后将学生名称从A列(名称)复制到表格时间表< / strong> A栏;第1,2,3等等。
这可能吗?
我已经在时间表表
中找到了这个=IF(SUM(COUNTIF(Pupils!$G$2:$G$663,Days!$C$2)),"true","false")
但这仅检查结果是否为真,它们是什么。
我的ramblings有意义吗?
Thanx寻找。
萨姆
答案 0 :(得分:0)
在时间表工作表中未使用的单元格中,输入此公式
=IFERROR(INDEX(Pupils!A:A, AGGREGATE(15, 6, ROW(A$1:A$99)/(Pupils!B$1:B$99=Days!$C$2), ROW(1:1))), TEXT(,))
填写。如果第99行下面的学生工作表中列出了学生,请调整$99
部分。
答案 1 :(得分:0)
如果您打算使用VBA,一种简单的方法就是将所有内容复制完毕,然后在工作表上进行评估(&#34;时间表&#34;)。
Dim i as integer
Dim LR as Long
LR = Sheets("Pupils).Cells(Rows.Count, "A").End(xlUp).Row
Sheets("Pupils").Range("A1:B"&LR).Copy Sheets("Timetable").Range("A1:B"&LR)
For i = LR to 2 Step -1
If Sheets("Timetable").Cells(i,2).Value=Sheets(Pupils).Cells(2,2).Value Then
Else: Sheets("Timetable").Rows(i).Delete
End If
Next i
我走了使用if语句的路线,如果你在B列中的那一天与Pupils标签单元格B2匹配,那么没有任何反应,但是如果它不匹配,它会删除该行。请注意,For循环有一个负步骤,因为在开始删除之前定义了最后一行,所以你想从底部到顶部向后移动。
编辑:
如果你想在Sheets上创建一个单元格(&#34;时间表&#34;)说出日期,你可以改变If语句来反映那个单元格,例如
=Sheets("Timetable").Cells(1,3) 'if you have the drop-down table in C1
如果你真的想深入研究,你也可以制作一个Userform来选择星期几。您可以将输入保存为变量,并比较类似于:
Dim DayInput as String
DayInput=CheckBox1.Value
If Sheets("Timetable").Cells(i,2).Value=DayInput Then
答案 2 :(得分:0)
希望我能附上一份文件。我参加了Jeeped建议的配方。
在时间表中我设置了7列:太阳,周一,周二,周三,周四,周五,周六
在时间表单元格A2:= IF(学生!$ B $ 2:$ B $ 99 =天!$ A $ 1,学生!$ A2,&#34;&#34;)
在时间表单元格B2:= IF(学生!$ B $ 2:$ B $ 99 =天!$ A $ 2,学生!$ A2,&#34;&#34;)
...继续查看所有7列,请注意编辑Days单元格引用
...然后将所有7列向下拉成与瞳孔一样多的行
在时间表单元格A3中:= IF(学生!$ B $ 2:$ B $ 99 =天!$ A $ 1,学生!$ A3,&#34;&#34;)
在时间表单元格A4:= IF(学生!$ B $ 2:$ B $ 99 =天!$ A $ 1,学生!$ A4,&#34;&#34;)
...
希望这是你想要的时间表&#39;。