VBA解决方案删除所有文本,但dd-mmm-yyyy; dd-mmm-yyyy @ Basic

时间:2018-02-14 20:00:46

标签: excel date

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

例如:

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

我想删除2017年11月14日; 2018年1月 - 2018年;在此示例中为中级并保存任何具有基本价值及其日期的内容。也是昏迷在每个数据块之间分隔值。

1 个答案:

答案 0 :(得分:1)

假设有几件事:

  1. 我们正在查看要保留/替换的块用逗号分隔
  2. 我们希望保留的块的形式始终是<date>;;Basic
  3. 在excel中按Ctrl + F11调出VBE(我们写VBA或&#34;宏&#34;) 右键单击工作簿左上角的Project-VBAProject窗格,然后选择&#34; Insert&gt;&gt; Module&#34;。这将在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已准备就绪。

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

     =cleancell(A1)
    

    这将吐出:

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

    使用中: enter image description here