如何使用excel vba删除除词和日期之外的所有内容

时间:2018-05-21 23:24:55

标签: excel vba excel-vba

我每月更新一个word文件 - 它包含空白行,misc特殊字符,每个报告,描述,参考和日期都会发生变化。
word文档中的数据快照: Word document data example

目前上传到excel,auto_open宏打开并从word导入数据。然后宏停止用户清理 - 我目前使用“过滤器”功能删除除标题,结果和日期之外的所有内容。如果misc特殊字符是常量,我可以自动化,但事实并非如此...... 我搜索了多个论坛寻求帮助,并找到了一些代码,删除除了字母字符以外的所有字符 - 它给了我开始的基础知识 - 它删除了除字母之外的所有内容然后使它们全部上限 - 我迷失在这一个......

我目前使用的是:

Sub Remove_stuff()
Dim varRange As Range
Dim varWorkRange As Range

Set varWorkRange = Range("A15:A100")
Range("a15").Select

For Each varRange In varWorkRange
    varVal = ""
    For i = 1 To Len(varRange.Value)
        vartemp = Mid(varRange.Value, i, 1)
        If Not (vartemp Like "[a-z]" Or vartemp Like "[A-Z]") Then
            varStr = ""
        Else
            varStr = UCase(vartemp)
        End If
        varVal = varVal & varStr
    Next i
    varRange.Value = varVal
Next
End Sub

我搜索过使用ISDATE的“赞”来识别带有日期的单元格,并将它们排除在没有运气的情况下被删除。任何帮助将不胜感激 - 谢谢

好的 - 得到了 - 这是word文档中的数据

南区的土壤样本(参考“B6:D4”)

追踪结果

2018年5月20日

1

•...... 水样

盐溶液

2018年5月20日

4

•...... 使用的农药

参考资料库4书C204

2018年5月20日

3 `

1 个答案:

答案 0 :(得分:0)

这样的事情:

Sub Remove_stuff()
Dim varRange As Range
Dim varWorkRange As Range

Set varWorkRange = Range("A15:A100")

For Each varRange In varWorkRange
    If Not IsDate(varRange) Then
        varVal = ""
        For i = 1 To Len(varRange.Value)
            vartemp = Mid(varRange.Value, i, 1)
            If Not vartemp Like "[A-z]" Then
                varStr = ""
            Else
                varStr = UCase(vartemp)
            End If
            varVal = varVal & varStr
        Next i
        varRange.Value = varVal
    End If
Next
End Sub

正在为我做这个伎俩。