Конкатенация для следующего цикла

У меня есть электронная таблица Excel, в которой находится 37 столбцов, а 13 580 – вниз. Моя цель – взять ту же информацию и экспортировать ее, как в блокнот. Из исследования, которое я сделал. Это невозможно, потому что ограничение персонажа равно 240, а моя таблица – максимум 256.

Что делает это намного сложнее, чем должно быть, это то, что я не могу просто захватить «A1: AK1» и вставить его. У меня есть требования, что я хочу, чтобы каждый столбец и строка были доступны. Такие как:

  • Я хочу, чтобы мой экспортированный текст был ВСЕ. (Слишком сложно скопировать и вставить между Word в Excel в Word, чтобы получить результаты. Большие тексты данных могут также вызвать отставание в этом процессе).
  • Для каждого столбца есть предел Max Character (они не содержат одного и того же предела, каждый из которых может отличаться от последнего)
  • Я не хочу разграничителя, но нужно автоматически вставлять и варьироваться по размеру, в зависимости от лимита символов (столбцы должны падать в строке в блокноте, чтобы их можно было импортировать правильно.)
  • Если это вообще возможно, это что-то дополнительное, но если функция Trim() может быть включена, в случае, если в некоторых значениях есть лишние пробелы
  • О, и я почти забыл, что некоторые из значений, выровненных в блокноте, выровнены по левому краю, а некоторые – вправо. (Пример ниже)

img: h_ttp: //i.stack.imgur.com/pCvDW.png (есть пустота, а некоторые значения падают с правой стороны, а другие начинаются слева)

Что я пытался

  'from rows 1 to end 'for every column in row# 'right align=space(30 - characterlength(column[row#])) & column[row#] & 'left align=column[row#] & space(30 - characterlength(column[row#])) & txt = txt & UCase(_ rnSelect.Range("B" & lgl).Value & _ rngSelect.Range("C" & lgl) & Space(14 - Len(rngSelect.Range("C" & lgl))) & _ rngSelect.Range("D" & lgl) & Space(8 - Len(rngSelect.Range("D" & lgl))) & _ Left(Trim(rngSelect.Range("E" & lgl)), 12) & Space(12 - Len(rngSelect.Range("E" & lgl))) & _ Left(Trim(rngSelect.Range("F" & lgl)), 30) & Space(30 - Len(rngSelect.Range("F" & lgl))) & _ Space(8 - rngSelect.Range("G" & lgl).Count) & rngSelect.Range("G" & lgl) & Space(8 - rngSelect.Range("H" & lgl).Count) & rngSelect.Range("H" & lgl) & Space(8 - rngSelect.Range("I" & lgl).Count) & rngSelect.Range("I" & lgl) & Space(8 - rngSelect.Range("J" & lgl).Count) & rngSelect.Range("J" & lgl) & _ Space(8 - rngSelect.Range("K" & lgl).Count) & rngSelect.Range("K" & lgl) & Space(8 - rngSelect.Range("L" & lgl).Count) & rngSelect.Range("L" & lgl) & _ Space(8 - rngSelect.Range("M" & lgl).Count) & rngSelect.Range("M" & lgl) & Space(8 - rngSelect.Range("N" & lgl).Count) & rngSelect.Range("N" & lgl) & _ Space(8 - rngSelect.Range("O" & lgl).Count) & rngSelect.Range("O" & lgl) & Space(8 - rngSelect.Range("P" & lgl).Count) & rngSelect.Range("P" & lgl) & _ Space(8 - rngSelect.Range("Q" & lgl).Count) & rngSelect.Range("Q" & lgl) & Space(4 - rngSelect.Range("R" & lgl).Count) & rngSelect.Range("R" & lgl) & _ Space(6 - rngSelect.Range("S" & lgl).Count) & rngSelect.Range("S" & lgl) & Space(6 - rngSelect.Range("T" & lgl).Count) & rngSelect.Range("T" & lgl) & _ Space(6 - rngSelect.Range("U" & lgl).Count) & rngSelect.Range("U" & lgl) & Space(6 - rngSelect.Range("V" & lgl).Count) & rngSelect.Range("V" & lgl) & _ Space(1 - rngSelect.Range("W" & lgl).Count) & rngSelect.Range("W" & lgl) & Space(6 - rngSelect.Range("X" & lgl).Count) & rngSelect.Range("X" & lgl) & _ Space(6 - rngSelect.Range("Y" & lgl).Count) & rngSelect.Range("Y" & lgl) & Space(6 - rngSelect.Range("Z" & lgl).Count) & rngSelect.Range("Z" & lgl) & _ Space(2 - rngSelect.Range("AA" & lgl).Count) & rngSelect.Range("AA" & lgl) Space(6 - rngSelect.Range("AB" & lgl).Count) & rngSelect.Range("AB" & lgl) & _ Space(2 - rngSelect.Range("AC" & lgl).Count) & rngSelect.Range("AC" & lgl) Space(2 - rngSelect.Range("AD" & lgl).Count) & rngSelect.Range("AD" & lgl) & _ Space(1 - rngSelect.Range("AE" & lgl).Count) & rngSelect.Range("AE" & lgl) Space(1 - rngSelect.Range("AF" & lgl).Count) & rngSelect.Range("AF" & lgl) & _ Space(1 - rngSelect.Range("AG" & lgl).Count) & rngSelect.Range("AG" & lgl) Space(1 - rngSelect.Range("AH" & lgl).Count) & rngSelect.Range("AH" & lgl) & _ Space(2 - rngSelect.Range("AI" & lgl).Count) & rngSelect.Range("AI" & lgl) Space(5 - rngSelect.Range("AJ" & lgl).Count) & rngSelect.Range("AJ" & lgl) & _ Space(5 - rngSelect.Range("AK" & lgl).Count) & rngSelect.Range("AK" & lgl) Space(3) & vbCrLf ) 'add 3 spaces and a LineFeed 'next row 

В конце концов, все, что я получаю, это ошибка, потому что все в одной строке, и я не совсем уверен, как ее сломать.

PS Каждая другая часть кода, кроме того, что я вставил, был / был общим, я нашел их во время своих исследований по бесчисленным источникам. Он просто указал функцию экспорта / скрипт.

Можно ли объединить такой крупный макрос? Если нет, есть ли цикл, который я могу использовать? Все, что я хочу, это копирование и вставка как в блокнот, но разнесенные соответственно (не могу полагаться на ширину столбца, потому что я не слишком уверен, сколько символов может поместиться в пределах определенных параметров).

Пожалуйста и спасибо.


EDIT. Хорошо, я хотел бы поблагодарить @codejockey за помощь, которую он мне дал. Я получаю результаты, а не те, которые мне нравятся. Сценарий работает, и он движется очень быстро (удивительно).

Вот код, который я использую:

 Public Function ProcessCell(inputString As String, colNum As Integer) As String Dim tempString As String Select Case colNum Case 1 'Column "A" tempString = UCase("TEST") Case 2, 3 'Column "B" & "C" tempString = tempString & Space(14 - Len(inputString)) Case 4 'Column "D" tempString = tempString & Space(8 - Len(inputString)) Case 5 'Column "E" tempString = tempString & UCase(Trim(Left(inputString, 12))) & Space(12 - Len(Trim(inputString))) Case 6 'Column "F" tempString = tempString & UCase(Trim(Left(inputString, 30))) & Space(30 - Len(Trim(inputString))) ' ' Keep Going... ' Case 7, 8, 9, 10, 11, 12, 13, 14, 15 'Example for multiple cases handled the same way tempString = tempString & Space(8 - Len(inputString)) & inputString Case 16, 17 'Example for multiple cases handled the same way tempString = tempString & Space(6 - Len(inputString)) & inputString Case 18 'Example for multiple cases handled the same way tempString = tempString & Space(4 - Len(inputString)) & inputString Case 19, 20, 21, 22 'Example for multiple cases handled the same way tempString = tempString & Space(6 - Len(inputString)) & inputString Case 23 'Example for multiple cases handled the same way tempString = tempString & Space(1 - Len(inputString)) & inputString Case 24, 25, 26 'Example for multiple cases handled the same way tempString = tempString & Space(6 - Len(inputString)) & inputString Case 27 'Example for multiple cases handled the same way tempString = tempString & Space(2 - Len(inputString)) & inputString Case 28 'Example for multiple cases handled the same way tempString = tempString & Space(6 - Len(inputString)) & inputString Case 29, 30 'Example for multiple cases handled the same way tempString = tempString & Space(2 - Len(inputString)) & inputString Case 31, 32, 33, 34 'Example for multiple cases handled the same way tempString = tempString & Space(1 - Len(inputString)) & inputString Case 35 'Example for multiple cases handled the same way tempString = tempString & Space(2 - Len(inputString)) & inputString Case 36, 37 'Example for multiple cases handled the same way tempString = tempString & inputString & Space(5 - Len(inputString)) ' End Select tempString = tempString & Space(3) & vbCrLf ProcessCell = tempString End Function 

Но результаты, которые я получаю, – это http://i.stack.imgur.com/AaGeI.png, где это происходит, а не больше … как первая ссылка http: //i.stack.imgur. ком / pCvDW.png

Сценарий, который я использую, не включен в функцию, выглядит так:

 Dim rngSelect As Variant Set rngSelect = Range("A2:AI3") Dim lgl As Long Dim lastRow As Long lastRow = Range("A" & Rows.Count).End(xlUp).Row For lgl = 1 To lastRow For i = 1 To 37 oneLine = oneLine & ProcessCell(rngSelect.Cells(lgl, i), i) Next i oFile.Write oneLine oneLine = vbNullString Next Set rngSelect = Nothing oFile.Close 

Что я делаю неправильно, я не знаю, как это исправить, или почему это выглядит так, как оно есть … кажется, что в коде есть дополнительные LineFeeds, но я только вставил linefeed один раз ..

Вы должны разбить эту «строку» кода на более простые шаги!

Напишите функцию, которая берет строку и обрабатывает ее так, как вы хотите.

 Public Function ProcessCell(inputString as String, colNum as Integer) As String Dim tempString as String Select Case colNum Case 2 'Column "B" tempString = inputString Case 3 'Column "C" tempString = inputString & Space(14 - Len(inputString)) ' ' Keep Going... ' Case 6, 7, 8, 9 'Example for multiple cases handled the same way ' ' End Select ProcessCell = tempString End Function 

Теперь вы можете просто просмотреть все столбцы:

 For i = 1 To 37 oneLine = oneLine & ProcessCell(rngSelect.Cells(lgl, i), i) Next i 

Надеюсь, это полезно!

  • Средний интервал, основанный на границах, заданных другими векторами - "R"
  • Конкатенация строковых и циклических значений
  • Макрос для конкатенации двух столбцов на основе значений заголовка
  • PBKDF2 Excel UDF и как объединить INT (i)
  • Копирование нескольких диапазонов и их объединение в Excel
  • Сравнить диапазон дат до значений массива
  • Конкатенация чередующихся заголовков фиксированных столбцов и значений строк
  • Ускорить объединение файлов Excel с помощью Pandas
  • Совокупные строки Excel на основе полей - конкатенации значений
  • vba loop для добавления в строку. Текущий код перезаписывается вместо добавления в ячейку
  • Почему в середине есть место? VBA excel
  • Interesting Posts

    Basic XLL Excel Addin – требуется вызвать C # API из Excel

    Массив Variant, переданный из UserForm в Module в VBA, равен null / empty

    Макрос для создания резервной копии при сохранении файла

    направляя пользователя в расположение файлов с помощью vba excel

    VBA.UserForms.Add возвращает ошибку времени выполнения в Mac Excel

    какова именно математическая функция за SUMPRODUCT от excel?

    Запрос базы данных Oracle вызывает ошибку при втором запуске

    Средняя формула с использованием количества пустых строк выше

    Как найти и выбрать последний столбец в VBA?

    Макрос не работает на рабочем листе, Excel VBA

    преобразование excel в XSSFWorkbook с использованием Apache poi, принимая много времени

    Как я могу получить Excel для программной записи в CSV?

    Матрица ковариации Excel с данными # N / A

    Диапазон в Excel для перехода от определенной ячейки до конца столбца

    Как обновить таблицу Excel с помощью VBA при сохранении формул таблицы

    Давайте будем гением компьютера.