разделение данных в Excel 2013 - PullRequest
0 голосов
/ 28 июня 2018

Я очень плохо знаком с макросами Excel. У меня есть данные ниже в Excel:

Col1 Col2       col3    col4  Col5
32    000-001                   1
32    002-001                   100
32    005-000                   20

и так далее. У меня 6313 строк в моей таблице Excel.

Я хочу разделить col2 и поставить первые три числа перед дефисом в col3 и последние три числа в col4. Я также хочу удалить дефис из col2, поэтому мой окончательный вывод будет выглядеть так:

col1   col2     col3    col4    col5
32    000001    000      001    1
32    002001    002      001    100
332   005000    005      000    20

Это то, что я уже пробовал. Я попытался заменить дефис пустым пространством, а затем потерял все ведущие нули. Я не хочу терять весь ведущий ноль от col2.

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

0 голосов
/ 28 июня 2018

Если вы делаете это вне VBA (опция помечена Excel-Formula), вы можете использовать следующие три функции: Left, Right и Substitute.

Вам потребуется добавить дополнительный столбец для реализации этого.

enter image description here

Что даст следующие результаты:

enter image description here

0 голосов
/ 28 июня 2018

Попробуйте,

With Worksheets("sheet8")
    For i = 2 To .Cells(.Rows.Count, "B").End(xlUp).Row
        With .Cells(i, "B")
            .Resize(1, 3).NumberFormat = "@"
            .Resize(1, 3) = Array(Replace(.Value2, Chr(45), vbNullString), _
                           Split(.Value2, Chr(45))(0), _
                           Split(.Value2, Chr(45))(1))
        End With
    Next i
End With
0 голосов
/ 28 июня 2018

Предполагая, что Col1 находится в A1: переместите ColumnB в ColumnC, разделите текст на столбцы с - в качестве разделителя (выберите Text для обоих столбцов), затем в B2 и скопируйте так, чтобы они подходили:

=C2&D2
0 голосов
/ 28 июня 2018

Попробуйте:

Sub aljali()
    Dim i As Long, N As Long

    Range("A:E").NumberFormat = "@"
    N = Cells(Rows.Count, "A").End(xlUp).Row

    For i = 1 To N
        Cells(i, "B").Value = Replace(Cells(i, "B").Value, "-", "")
        Cells(i, "C").Value = Left(Cells(i, "B").Value, 3)
        Cells(i, "D").Value = Right(Cells(i, "B").Value, 3)
    Next i
End Sub

Примечание:

Ключом к этому является установка формата ячеек на Текст . Это облегчает сохранение этих ведущих нулей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...