【问题标题】:Excel VBA code to return weekday name from a date then autofilters for userdefined weekdays and copies autofiltered data to new sheetExcel VBA代码从日期返回工作日名称,然后自动过滤用户定义的工作日并将自动过滤的数据复制到新工作表
【发布时间】:2016-04-14 21:52:46
【问题描述】:

我昨晚一直在寻找我的问题的答案,但我没有找到任何具体的问题。

我有一张包含大量数据的大表格。在 A 列中,我有日期和时间。我想要一个执行很少操作的 VBA 代码。

1) 在给出工作日名称的 A 列旁边插入 B 列。例如,如果 A 列中的日期是 2016 年 1 月 10 日 8:30,则 B 列将显示“星期日”

2) 然后 VBA 代码根据 B 列过滤此工作表。例如,给定特定日期(例如星期五)的用户输入,自动过滤器将过滤 4 天前(星期五、星期六、星期日、星期一) .

3) 然后将自动过滤器的结果复制到新的空白表中。

4) 在新工作表中,我希望 vba 删除同一用户定义的日期(例如星期五)的任何行数据,其时间小于 A 列中用户定义的时间(例如上午 8:00)。最后转移单元格向上删除任何空白行。

希望我不会因为这个问题让你不知所措,但我希望我能从这里的一位聪明人那里得到反馈

这里是第 1 部分尝试的代码

Sub sbInsertingColumns()
Worksheets("Imported").Activate
'Inserting a Column at Column B
If Range("B1").Value = "Weekday" Then
Range("B1").Value = "Weekday1"
Else
Range("B1").EntireColumn.Insert
Range("B1").Value = "Weekday"
Worksheets("Imported").Range("B2").Formula = "=choose(weekday(A2),""Sunday"",""Monday"",""Tuesday"",""Wednesday"",""Thursday"",""Friday"",""Saturday"")"
LastRow = Range("A" & Rows.Count).End(xlUp).Row
Range("B2").Copy Range("B2:B" & LastRow)
End If
End Sub

【问题讨论】:

  • 您可以先使用下面链接中提到的“Werkday”功能。 techonthenet.com/excel/formulas/weekday.php
  • 我试过 Range("B2").Formula= "=choose(weekday(a1),"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday ","Saturday")" 但它不起作用

标签: excel copy-paste autofilter weekday vba


【解决方案1】:

这只是为了让您入门。

如果 A2 包含真正的 Excel 日期/时间,则在 B1 中输入:

=TEXT(A2,"dddd")

如果您想要一个 VBA 宏来完成您的项目,请先打开宏记录器并手动执行一次任务。

然后您将拥有一个可以开始优化和泛化的宏。

【讨论】:

  • 现在我设法将 VBA 代码设置为 1) 在 A 列旁边插入一个 B 列,该列给出工作日名称。例如,如果 A 列中的日期是 2016 年 1 月 10 日 8:30,那么 B 列将显示“星期日”现在我需要帮助来尝试原始帖子中剩余的 2、3、4 个问题
  • Sub sbInsertingColumns() Worksheets("Imported").Activate '在 B 列插入一列 If Range("B1").Value = "Weekday" Then Range("B1").Value = "Weekday1" Else Range("B1").EntireColumn.Insert Range("B1").Value = "Weekday" Worksheets("Imported").Range("B2").Formula = "=choose(weekday(A2) ,""星期日"",""星期一"",""星期二"",""星期三"","星期四"",""星期五"",""星期六"")" LastRow = Range("A " & Rows.Count).End(xlUp).Row Range("B2").Copy Range("B2:B" & LastRow) End If End Sub
  • @exlover 您需要将您尝试的任何代码放在原始帖子中。它更易于格式化和阅读。
猜你喜欢
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2020-03-12
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多