在 Excel、Notepad++ 或 emEditor 中在第 n 个逗号后添加空格?

在 Excel、Notepad++ 或 emEditor 中在第 n 个逗号后添加空格?

Notepad++ 6.8.8 我希望能够将几行以如下内容开头的代码转换为:

0,2,3,45,67,89,01,234,567,890,123,4567,8901
0,7,8,9,0,11,12,13,14,151,162,173,184
x,z,q,r,n,f,t,a,e,f,z,n,a

进入

0, 2,3, 45,67, 89,01, 234,567, 890,123, 4567,8901
0, 7,8, 9,0, 11,12, 13,14, 151,162, 173,184
x, z,q, r,n, f,t, a,e, f,z, n,a

第一个0,逗号后有一个空格(第一个数字后面跟着逗号),然后每两个逗号后加一个空格。

  • 不是每行都以 [zero] 开头。 有时0可以以任何数字或句点开头,也可以以单词开头。.
  • 我希望每一行都被独立处理;保持它们单独的行内容(在搜索数字和逗号时,一行不能换到另一行)。

我可能遇到另一种情况,需要在第一个逗号后以 4 个为一组添加逗号后的空格。例如:

x,z,q,r,n,f,t,a,e,f,z,n,a

x, z,q,r,n, f,t,a,e, f,z,n,a

Notepad++ 是执行此操作的首选方法(正则表达式、宏等),但如果有帮助的话,我确实有 EmEditor、MS Word/Excel 2010。录制这样的宏很困难,因为每个逗号前后的字符数量可能不同。请解释一下您使用的语法,以防需要进行调整。

答案1

这里有一种方法可以在 Excel 中执行此操作,即在 A 列中粘贴行并将 workingRange 更改为范围。然后,您只需将 A 列复制回记事本即可

打开 ExcelDeveloper tab并选择Visual Basic[用于应用程序],或按Alt + F11

Excel 开发人员选项卡 VBA 屏幕截图

将以下代码复制到新模块中:

Option Explicit
Public Sub notepadthing()

    Dim workingRange As Range
    'Set your range here
    Set workingRange = Range("A1:A3")
    workingRange.TextToColumns _
    Destination:=workingRange, _
    DataType:=xlDelimited, _
        TextQualifier:=xlTextQualifierNone, _
        ConsecutiveDelimiter:=False, _
        Tab:=False, _
        Semicolon:=False, _
        Comma:=True, _
        Space:=False, _
        Other:=False

Dim lastColumn As Long
Dim rowNumber As Long
Dim columnNumber As Long
Dim myString As String


For rowNumber = 1 To workingRange.rows.count
    lastColumn = Cells(rowNumber, Columns.Count).End(xlToLeft).Column
    myString = Cells(rowNumber, 1) & ", "
    For columnNumber = 2 To lastColumn - 1
        myString = myString & Cells(rowNumber, columnNumber) & ","
        If columnNumber Mod 2 <> 0 Then myString = myString & " "
    Next
    Cells(rowNumber, 1) = myString & Cells(rowNumber, lastColumn)
Next

    Application.ScreenUpdating = True
End Sub

将您想要格式化的电子表格设为当前电子表格。切换回 VBA 窗口并单击按钮Run(看起来像 DVD 或音乐播放器上的播放按钮)

Excel VBA 运行模块

这只是将文本转换为列并连接。我相信有更简单的方法可以做到这一点。


间距的工作方式如下 -

For columnNumber = 2 To lastColumn - 1
   myString = myString & Cells(rowNumber, columnNumber) & ","
   If columnNumber Mod 2 <> 0 Then myString = myString & " "
Next
Cells(rowNumber, 1) = myString & Cells(rowNumber, lastColumn)

它总是会添加一个,,但您可以决定何时添加空格。目前,第 1 列是单独的。因此,当我们遍历列时,奇数列需要空格columnnumber Mod 2 <> 0

要改变这种情况,您需要按照以下逻辑进行:第 1 列后有一个空格,然后我需要 4 组,因此是第 5 列、第 9 列、第 13 列。但这些数字很难处理,而且它们只相差 1 到 4 的自然倍数。因此,如果我减去 1,然后检查是否能被 4 整除……

If (columnNumber - 1) Mod 4 = 0 Then myString = myString & " "

相关内容