【问题标题】:VBA Solution for removing all text but dd-mmm-yyyy;dd-mmm-yyyy@Basic删除除 dd-mmm-yyyy 之外的所有文本的 VBA 解决方案;dd-mmm-yyyy@Basic
【发布时间】:2018-02-14 20:00:46
【问题描述】:

因此,我们在 excel 中的一列在包含订阅数据、日期开始和日期结束数据的单元格中有数据。

例如:

2017 年 11 月 14 日;2018 年 1 月 8 日;中级,2018 年 1 月 11 日;;基本,2018 年 1 月 12 日;;基本

我想删除此示例中的 14-Nov-2017;08-Jan-2018;Intermediate 并保存任何具有基本值及其日期的内容。每个数据块之间也是逗号分隔值。

【问题讨论】:

  • 我觉得您可以在 Windows powershell 上使用正则表达式来完成此操作。尝试一下,然后以更具体的方式再次提出问题。
  • 要保留或删除的不同“块”是否总是用逗号分隔?保留其中一个块的标准是否必须采用dd-mon-yyyy;;Basic 的形式?当你说“没有编程”时,你是不是也说没有 VBA?
  • 它们总是用逗号分隔。我什至不知道 VBA 是什么,直到我刚刚查找它,所以在某种意义上可以做出我的答案。改变了我的问题,现在我更喜欢 vba 的答案。

标签: excel date


【解决方案1】:

假设有几件事:

  1. 我们要保留/替换的块用逗号分隔
  2. 我们希望保留的块的形式总是<date>;;Basic

在 excel 中按 Ctrl+F11 调出 VBE(我们在其中编写 VBA 或“宏”) 在工作簿左上角的 Project-VBAProject 窗格中右键单击,然后选择“插入>>模块”。这将在 Modules 文件夹中创建 Module1。

现在粘贴以下 UDF:

Function cleancell(strCell As String) As String
    For Each el In Split(strCell, ",")
        If IsDate(Split(el, ";")(0)) And Split(el, ";")(2) = "Basic" Then
            cleancell = IIf(cleancell = "", cleancell, cleancell & ",") & el
        End If
    Next
End Function

这将为您的工作簿提供一个新的自定义公式(用户定义公式)。保存您的工作簿以确保 UDF 已准备就绪。

假设您在单元格A1 中有值14-Nov-2017;08-Jan-2018;Intermediate,11-Jan-2018;;Basic, 12-Jan-2018;;Basic,那么在A2 中您可以使用新公式:

 =cleancell(A1)

这会吐出来:

 11-Jan-2018;;Basic,  12-Jan-2018;;Basic

使用中:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多