Excel 或批处理 - 尝试自动执行文本更正(许多更改;每个更改一个或多个字符)

Excel 或批处理 - 尝试自动执行文本更正(许多更改;每个更改一个或多个字符)

我有很多行文本。我可以将它们放入文本文件或 Excel 电子表格中。它们需要进行许多更改。以下是前后的示例:

Input:  I'm buying one!  Only $39 .....
Output: I'm buying one - Only USD 39

换句话说,HTML 代码被转换为撇号,感叹号变成了空格连字符,重复的空格被删除,$变成了USD,并以 结尾dotsspaces并被删除,直到没有剩余。

我猜测可能需要两个不同的过程 - 首先,对所有出现的字符进行简单的字符替换,然后进行循环过程以不断减少多个实例(例如,将两个空格转换为一个,直到不再有两个空格的组合)。

理想情况下,我会有一个易于编辑的列表,就像在 Excel 电子表格中一样,其中一个单元格用于“之前”,另一个相邻单元格用于“之后”。或者至少我理想情况下会有一个用于操作的简单替换部分的列表。

我在各种帖子中看到了很多宏和脚本,但大多数都不太准确,有些我看不懂。有什么建议吗?

答案1

我经常使用 Microsoft Word 来处理这类事情。它的搜索和替换功能非常强大,我发现它比 Excel 更容易处理替换。我还使用一款名为 NoteTab 的记事本替代应用程序(http://www.notetab.com/)。有一个免费的“精简版”。Notetab 的优点在于它允许您轻松地在多个文件中进行搜索。

答案2

如果您的所有文本都与您提供的示例类似,则此方法有效。只需在 Excel 中打开文本文件,然后添加一个新工作表来创建替换项表(带标题)。我已将其设置为将第一列读取为“之前”项,将第二列读取为“之后”项。完成此操作后,按Alt+F11打开 VBA 编辑器窗格。插入新模块并粘贴以下代码。

Option Explicit
Sub cleanupText()

Dim allTxt() As Variant, sublist() As Variant
Dim i As Long, j As Long, k As Long, tdots As Integer

'Store data from sheets in arrays.
allTxt = Sheets(1).UsedRange.Value
sublist = Sheets(2).UsedRange.Offset(1, 0).Resize(Sheets(2).UsedRange.Rows.Count - 1, Sheets(2).UsedRange.Columns.Count).Value

For i = 1 To UBound(allTxt, 1)
    For j = 1 To UBound(allTxt, 2)
        'Loop through replacement terms and make replacements to data in array.
        For k = 1 To UBound(sublist, 1)
            allTxt(i, j) = Replace(allTxt(i, j), sublist(k, 1), sublist(k, 2))
        Next k
        allTxt(i, j) = Trim(allTxt(i, j))
        'Remove series of trailing periods.
        If Right(allTxt(i, j), 1) = "." Then
            tdots = 1
        Else
            tdots = 0
        End If
        Do While tdots = 1
            allTxt(i, j) = Left(allTxt(i, j), Len(allTxt(i, j)) - 1)
            If Right(allTxt(i, j), 1) = "." Then
                tdots = 1
            Else
                tdots = 0
            End If
        Loop
        allTxt(i, j) = Trim(allTxt(i, j))
    Next j
Next i
'Print cleaned up results in array onto sheet.
ActiveSheet.UsedRange.Value = allTxt
End Sub

执行代码,然后将文件保存为文本。

答案3

http://www.sobolsoft.com/excelremove/

这是一款不错的插件(适用于 Excel),可以满足您的所有需求。它的价格为 30 美元(撰写本文时),因此如果您经常或经常使用它,那么它就很棒,但如果这只是一次性使用,那么它可能不值得。

它的工作原理是选择删除/替换用户选择的字符,然后您可以选择替换,告诉它您要替换哪些字符,然后用什么替换,然后砰的一声。它会遍历所有选定的单元格并进行更改。您甚至可以添加空格以使内容清晰。

相关内容