VBA Split Cells и вставка только определенных ячеек

Если вы вставляете данные с уже назначенными первичными ключами в MyISAM, значение столбца AUTO_INCREMENT для следующей вставки будет max (столбец) + 1, поэтому он будет работать.

Однако вы не используя MyISAM, так как это важные данные, вы используете InnoDB, которому требуется оператор ALTER TABLE, указанный выше.

0
задан croyx 19 March 2019 в 11:16
поделиться

1 ответ

Это должно делать то, что вы хотите. Я использовал ответ Portland Runner на этот пост , чтобы установить ссылку на RegEx в своем VBA и узнать синтаксис для него. Вместо каждого цикла я вычисляю последнюю строку столбца A и использую цикл for с таким количеством итераций. Переменная i установлена ​​в 2, чтобы пропустить заголовок в строке 1.

Sub SplitCol()
    'Set references to active workbook and sheet
    Dim wb As Workbook
    Dim ws As Worksheet
    Set wb = ActiveWorkbook
    Set ws = wb.ActiveSheet

    'Create Regular Expression object and set up options
    Dim regEx As New RegExp
    With regEx
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        '[0-9] means that regex will check for all digits
        '{6} means that a minimum of 6 consecutive chars must meet the [0-9] criteria
        .pattern = "[0-9]{6}"
    End With

    'All .Methods and .Properties will belong to ws object due to With
    With ws
        'Determine how many rows to loop through
        Dim lastRowA As Long
        lastRowA = .Range("A" & .Rows.Count).End(xlUp).Row

        'Main loop
        Dim i As Integer
        For i = 2 To lastRowA
            'Make sure there is a value in the cell or code will error out
            If Cells(i, 1).Value <> "" Then
                'Test regex of cell
                If regEx.Test(Split(Cells(i, 1).Value, "   ")(0)) Then
                    'If regex was true, set 3rd column (C) equal to numbers and
                    '4th column (D) equal everything else
                    Cells(i, 3).Value = Split(Cells(i, 1).Value, "   ")(0)
                    Cells(i, 4).Value = Split(Cells(i, 1).Value, "   ")(1)
                End If
            End If
        Next
    End With

    'Release regEx object to reduce memory usage
    Set regEx = Nothing

End Sub

Вот как должен выглядеть лист кода.

0
ответ дан Tyler N 19 March 2019 в 11:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: