Используя VBA, как я могу выбрать каждую другую ячейку в диапазоне строк (для копирования и вставки по вертикали)? - PullRequest
0 голосов
/ 01 апреля 2010

У меня более 2200 страниц текстового файла. Он доставляется от клиента через обмен данными со звездочками для разделения значений и тильды (~) для обозначения конца строки. Файл отправляется мне как текстовый файл в Word. Большинство строк разделены на две части (1 строка занимает всю строку и часть второй строки). Я переношу его сегменты (10 страничных блоков) за один раз в Excel, где, к сожалению, любые нули, которые встречаются в конце строки, отбрасываются в процедуре «текст в столбцы». Итак, я просматриваю каждую «длинную» строку, чтобы убедиться, что нули не были потеряны, и вручную повторно вводю все, что было.

Вот небольшой пример данных:

SDQ EA 92 1551 378 1601 151 1603 157 1604 83

«SDQ, EA и 92» не имеют значения (артефакты передачи данных). Я хочу использовать Excel и / или VBA для выбора 1551, 1601, 1603 и 1604 (это номера магазинов), чтобы я мог скопировать эти значения и транспонировать и вставить их вертикально. Затем я вернусь и скопирую 378, 151, 157 и 83 (значения продаж), чтобы можно было вставить их рядом с номерами магазинов. Следующие две строки данных содержат те же номера магазинов, но дают соответствующие значения в долларах. Мне нужно будет только скопировать значения в долларах, чтобы их можно было вставлять по вертикали рядом со значениями единиц (например, 378, 151, 157 и 83).

Простая возможность навести курсор на первую интересующую ячейку в строке и запустить макрос для копирования каждой другой ячейки, значительно ускорит мою работу. Я пытался использовать ссылки ActiveCell и Offset для выбора диапазона для копирования, но безуспешно. Есть ли какие-либо предложения для меня? Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 30 июля 2011

Трудно дать полный ответ без дополнительной информации о файле.

Я думаю, что если ваши входные данные имеют длину более 2200 страниц, маловероятно, что открытие их с помощью стандартных открывающих функций Excel - лучший способ. Тем более, что в Excel максимальное количество строк и столбцов. Если файл представляет собой текстовый файл (.txt), я бы предложил открыть его с помощью VBA и прочитать каждую строку по одной за раз и обработать данные.

Вот пример, с которого можно начать. Просто помните, что при этом каждая строка текста переносится в столбцы данных, поэтому вы быстро заполните все столбцы Excel задолго до того, как наберете 2200 страниц текста. Но это всего лишь пример.

Sub getData()
   dFile = FreeFile
   sFile = "c:\code\test.txt"

   Open sFile For Input As #dFile
    c = 1
    'keep doing this until end of file
    Do While Not EOF(dFile)
      'read line into dataLine
      Input #dFile, dataLine
      ' break up line into words based on spaces
      j = Split(dataLine, " ")
      jLength = UBound(j)
      If jLength > 2 Then
        r = 1
        'ignore first 3 words
        'and get every other word
        'transpose rows of text into columns
        For word = 3 To jLength Step 2
            Cells(r, c) = j(word)
            r = r + 1
        Next word
      End If
      c = c + 1
    Loop
  Close #Data
End Sub
...