2017-03-08 153 views
0

我正努力尝试使用M $ Excel创建公式以将结果复制到另一工作表。我想我可能需要VBA它。Excel 2010 - 将筛选结果复制到新工作表

我有三张床单。一个叫学生,一个叫和另一个,时间表

学生列A是“名称”和B列是下拉列表下降“日”与休一周作为选项。

我试图创建一个公式,着眼于塔B,并确定天已经选择了什么然后复制瞳孔名称从列A(名称)成片材时刻表柱A;第1,2,3行等

这可能吗?

我已经在我的时间表

=IF(SUM(COUNTIF(Pupils!$G$2:$G$663,Days!$C$2)),"true","false") 

得到这个,但如果结果这只支票是真的,他们是。

我的ramblings是否有意义?

Thanx for looking。

山姆

+0

'时间表中的每一行是否指的是不同的日期?您发布的公式与“时间表”中的日期相关意味着什么?这将有助于看到一些具有预期产出的样本数据。 – BruceWayne

回答

0

如果您打算使用VBA,则只需将所有内容都复制完毕,然后在表单上进行评估(“时间表” )。

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列中小学生标签单元格B2匹配,则什么也不会发生,但如果它不匹配,它删除了该行的路线。请注意,For循环有一个负面的步骤,因为最后一行是在开始删除之前定义的,因此您希望从下往上倒退。

编辑:

如果你想在表单元格(“时间表”)说的日期,你可以改变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 
+0

这是我选择的路线。 我已经修改了代码一点,并输出到一个新的工作表: 'code'Sub run_me() 昏暗我作为整数 昏暗LR只要 LR =表(“学生”)细胞(行。 (“学生”)。范围(“B1:G700”&LR)。复制表格(“输出”)。范围(“A1:C20”和“F”)。结束(xlUp).Row LR) For i = LR To 2 Step -1 If Sheets(“Output”)。Cells(i,2).Value = Sheets(“Pupils”)。Cells(2,2).Value Then Else: Columns(“E”)。SpecialCells(xlCellTypeBlanks).EntireRow.Delete End If Next i End Sub'code' 会有办法限制天数的输出,比如每天五个? – SamC

+0

夫妇的事情...... 1)如果你正在使用设定范围,例如B1:G700,你不需要LR。 LR用于动态定义最后一行。 2)如果你只想给出一个给定变量的5个输出,你将需要返回并且循环并在5之后移除行,或者使用.FIND。你可以查看.FIND信息,因为那里有很多。很高兴为你解决这个问题! – Cyril

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行下面的学生工作表中列出了学生。

0

希望我可以附加一个文件。我参加了Jeeped建议的配方。

在时刻表我成立了7列:周日,周一,周二,周三,周四,周五,周六

在时间表单元格A2:= IF(学生$ B $ 2:!$ B $ 99 =天$ A $ 1,学生$ A2, “”)

在时刻表细胞B2:= IF(学生$ B $ 2:$ B $ 99 =天$ A $ 2,学生$ A2,! “!”)

...继续跨所有7列,请注意编辑天数单元格参考号

...然后将所有7列向下拖动以获得与学生数量相同的行数

在时刻表细胞A3:= IF(学生$ B $ 2:$ B $ 99 =天$ A $ 1,学生$ A3 “”!)

在时刻表细胞A4:!= IF(学生$ B $ 2:!$ B $ 99 =天$ A $ 1,$小学生A4, “”)

...

希望这是你想要什么样的 '课程表'。

相关问题