Код VBA не работает в Excel с набором данных - PullRequest
0 голосов
/ 26 ноября 2018

Я работаю над проектом машинного обучения и использую Excel для обработки набора данных.Я новичок в Excel и VBA.

Итак, я использую этот набор данных , и я просто скопировал и вставил все это в электронную таблицу Excel.Я сделал текст в столбцы.Вот снимок некоторых данных:

Снимок данных

Я хочу переформатировать данные в электронной таблице, чтобы все данные помещались в одну строку, затем начинает новую строку после ключевого слова "name".

Например, я хочу, чтобы:

1 2 3 4 5 6 7 8 9 10

11 12 13 14 15 16 17 18

19 20 21 22 23 name

стало:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 name (all on one line)

без необходимостиделайте это вручную построчно.

Я использовал приведенный ниже код VBA для форматирования данных так, как я хочу:

Sub separateByName()
Dim lRow As Long
Dim lCol As Long
Dim lCol2 As Long

k = 1

lRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lRow
lCol = Cells(i, Columns.Count).End(xlToLeft).Column
For j = 1 To lCol

    lCol2 = Sheets("Sheet2").Cells(k, Columns.Count).End(xlToLeft).Column
    Sheets("Sheet2").Cells(k, lCol2 + 1).Value = Cells(i, j).Value
    If Cells(i, j).Value = "name" Then k = k + 1

Next j
Next i
End Sub

Однако при запуске у меня возникают проблемы в том, чторезультат выглядит случайным образом.

Это:

1 0 63 1 -9 -9 -9
-9 1 145 1 233 -9 50 20
1 -9 1 2 2 3 81 0
0 0 0 0 1 10.5 6 13
150 60 190 90 145 85 0 0
2.3 3 -9 172 0 -9 -9 -9
-9 -9 -9 6 -9 -9 -9 2
16 81 0 1 1 1 -9 1
-9 1 -9 1 1 1 1 1
1 1 -9 -9 name
2 0 67 1 -9 -9 -9
-9 4 160 1 286 -9 40 40
0 -9 1 2 3 5 81 0
1 0 0 0 1 9.5 6 13
108 64 160 90 160 90 1 0
1.5 2 -9 185 3 -9 -9 -9
-9 -9 -9 3 -9 -9 -9 2
5 81 2 1 2 2 -9 2
-9 1 -9 1 1 1 1 1
1 1 -9 -9 name

Стало это:

1 0 63 1 -9 -9 -9 1 0 63 1 -9 -9 -9 -9 1 145 1 233 -9 50 20 1 -9 1 2 2 3 81 0 0 0 0 0 1 10.5 6 13 150 60 190 90 145 85 0 0 2.3 3 -9 172 0 -9 -9 -9 -9 -9 -9 6 -9 -9 -9 2 16 81 0 1 1 1 -9 1 -9 1 -9 1 1 1 1 1 1 1 -9 -9 name

  -9 1 145 1 233 -9 50 20 2 0 67 1 -9 -9 -9 -9 4 160 1 286 -9 40 40 0 -9 1 2 3 5 81 0 1 0 0 0 1 9.5 6 13 108 64 160 90 160 90 1 0 1.5 2 -9 185 3 -9 -9 -9 -9 -9 -9 3 -9 -9 -9 2 5 81 2 1 2 2 -9 2 -9 1 -9 1 1 1 1 1 1 1 -9 -9 name

"Имя" правильно в конце, но фактические данные перепутаныup.

Может ли кто-нибудь помочь мне исправить этот код для моего набора данных?

Спасибо!

1 Ответ

0 голосов
/ 26 ноября 2018

Я также проверил ваш код с данными и убедился, что он работает нормально, просто убедитесь, что на листе 1 у вас есть данные, и у вас есть пустой лист 2, а затем используйте макрос, пока лист 1 открыт.тогда ваши данные в листе 2.

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