Блокнот ++ 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, запятой, (сначала числа с запятой после), а затем каждые 2 запятых, ставьте один пробел после запятой.

  • Не каждая строка будет начинаться с 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 ответ1

1

Вот способ сделать это в Excel, если вы вставите свои строки в столбец A и измените workingRange на свой диапазон. Тогда вы можете просто скопировать столбец А обратно в блокнот

Откройте вкладку Excel Developer tab и выберите Visual Basic [для приложений] или нажмите Alt + F11 .

Вкладка Excel Developer 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 до натуральных, кратных четырем. Так что, если я вычесть один, а затем проверить делится на четыре ..

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .