Разделение данных в Excel - PullRequest
       2

Разделение данных в Excel

0 голосов
/ 19 декабря 2011

Я получаю данные, которые нумеруются последовательно, но под каждым номером перед следующим номером стоит ноль, 1, 2 или 3 фрагмента информации.Мне нужно разделить данные так, чтобы числа были равномерно распределены!Любая помощь будет принята с большим удовольствием - я должен был поступить в Excel в университете, но это было десятилетия назад!Спасибо, Грэм, Привет, Роберт! Как новый пользователь из Австралии, я не могу вставлять изображения!Следовательно, представьте каждую запятую как разделяющие ячейки и черту как пустую ячейку Excel с первой строкой, которую я первоначально получаю.«G, h» и т. Д. Являются предложениями.2-й ряд - это то, чего я хотел бы достичь.К сожалению, он не будет форматировать, чтобы показывать ячейки, идущие вниз, а не поперек, поэтому он должен быть здесь, как в Excel или на вставленном изображении!Спасибо!

Получите 1, г, ч, 2, к, 3, а, с, в, 4,5, р, т

Требуется 1, г, ч, -, 2, k, -, -, 3, a, c, v, 4, -, -, -, 5, r, t, -,

Следовательно, если бы я получил 3 фрагмента информации для каждого «числа»(клиент) числа будут автоматически равномерно распределены, но, к сожалению, этого не происходит!

1 Ответ

0 голосов
/ 20 декабря 2011

Грэм, дайте мне знать, если вы можете создавать макросы VBA на основе примера.

Я только что написал один, который делает эту работу, хотя он и далекий от элегантности.

<----------- НАЧАЛО КОДА --------->

Sub uniformdata()
    ReceiveCol = 1    'Column where received data starts
    ReceiveRow = 1    'Row where where received data starts
    PublishCol = 1    'Column where Published data starts
    PublishRow = 2    'Column where Published data starts
    Do Until Cells(ReceiveRow, ReceiveCol).Value = ""
        For counter = 1 To 4
            If counter = 1 Then
                Cells(PublishRow, PublishCol).Value = Cells(ReceiveRow, ReceiveCol).Value
                ReceiveCol = ReceiveCol + 1
            Else
                If IsNumeric(Cells(ReceiveRow, ReceiveCol).Value) Then
                    Cells(PublishRow, PublishCol).Value = "-"
                Else
                    Cells(PublishRow, PublishCol).Value = Cells(ReceiveRow, ReceiveCol).Value
                    ReceiveCol = ReceiveCol + 1
                End If
            End If
            PublishCol = PublishCol + 1
        Next
    Loop
End Sub

<--------- КОНЕЦ КОДА --------->

Он просматривает ваш список слева направо, пока не найдет пустую ячейку.Внутри него постоянно проходит цикл 4 раза.На первом проходе он предполагает, что ваш номер есть, и сразу же записывает его.На других 3 проходах он проверяет, является ли следующая полученная ячейка номером или нет.Если это число, которое он знает, чтобы заполнить пробел тире, если это не число, используется найденный символ.

Дайте мне знать, если это решит вашу проблему.В моем примере это сработало как шарм.

С уважением,

Роберт Ильбринк

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