Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Перебор переменных и запись их в массив
 
Ну это совсем круто для меня будет научиться создавать коллекции...
Но пока столкнулся с одной моей "хотелкой"
Получившийся код из 400 тыс строк нужно запихнуть в другой файл. Нашел на форуме от Hugo пост пытался сделать, но что так и не заработало.... Видимо это особенности файла в который надо всё запихнуть. Макрокордер тоже никак не помогает.
Код
Sub Open_save_file()
Open "C:\Users\sscsyp\Desktop\example.xlm" For Output As #1
MsgBox (ok)
Print #1, Join(Application.Transpose(Project.Range("A1:A390832").Value), vbLf)
Close #1
End Sub

Задача макроса такова:
1)Написать путь к файлу - это изначально пустой шаблон, который будет храниться где то очень глубоко в недрах общих сетевых дисков. Макрос должен скопировать от туда  файл к себе в папку и открыть его.
2)Запихнуть туда код, сохранить и закрыть.

шаблон в формате xml и открывается только в блокноте.

Реально ли такое вообще делать?
Не могу приложить файл-шаблон - ругается на формат.
Перебор переменных и запись их в массив
 
Хотел поблагодарить всех участников, особенно Максима!

На основе идеи Максима, отказаться от массива в массиве получилось у меня написать код, увеличивая массив на определенное кол-во строк в зависимости от данных в первичном массиве!

Так как это был мой первый опыт написания массива провозился долго, но результат превзошел все ожидания: 100 тыс строк которые я ранее преоброзовывал в форму уже из 400 тыс строк макросом с записью в ячейку - на это уходило от 15 до 20 минут, то с помощью массива на это уходит 40-50 секунд!  
Перебор переменных и запись их в массив
 
Максим,
Огромное спасибо что помогаете!

строк вывода может колебаться в зависимости от того что указано в исходном файле. например для первой строки arrtemp будет 13 или 14 а вот для второй будет уже всего 3 или 4 в зависимости от заполнения исходника.

То есть в коде  ReDim arrtemp (1 To 14) мне нужно 14 постоянно увлечивать через цикл:
Например:
первая строчка в исходники
ReDim arrtemp (1 To 14)
и далее заполнили все arrtemp
вторая строчка исходника
ReDim arrtemp (15 To 17)
и далее заполнили три arrtemp
третья строчка исходника
ReDim arrtemp (18 To 21)
и так далее.....

Можно ли как то это сделать создав цикл.... например Redim arrtemp ( a to b)
Смысл SumArr в том, что я думал, что создав временный массив  arrtemp в зависимости от наполнения исходника и далее полученный массив запихиваем в конечный массив и стираем результат временного.... но вот как то не получилось((
Перебор переменных и запись их в массив
 
Цитата
есть шаблон для загрузки и переменные данныепоменяйте в шаблоне отдельные переменные на массив...
Максим, так я в коде поменял переменные на данные из первоначального массива.
например
Код
 arrtemp1 = " ....... & """" & myArr(n, 12) & .......
Перебор переменных и запись их в массив
 
Цитата
Максим Зеленский написал:
23For i = 1 To UBound(arrtemp)    Project.Range("a" & i + 11).Value = arrtemp(i)Next
Максим спасибо!

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

Про цикл с шагом один я думал....  
В первоначальном варианте, когда работаешь с листом там можно путешествовать по ячейкам с помощью .offset, а почитав про массивы как я понял здесь такое не прокатит.
Перебор переменных и запись их в массив
 
В идеале я хотел получить цикл вот такого вида
Код
 ReDim Preserve sumArr(counter To counter + 14)
             
 For b = 1 To 14
sumArr(counter + b) = arrtemp & b
Next b

где arrtemp & b = динамическая переменная, что в реалии к сожалению невозможно((
Перебор переменных и запись их в массив
 
Вот затык  в поле
Код
 ReDim Preserve sumArr(counter To counter + 14)
For b = 1 To 14
sumArr(counter) = arrtemp1
sumArr(counter + 1) = arrtemp2
sumArr(counter + 2) = arrtemp3
...
sumArr(counter + 13) = arrtemp14
Next

Мне нужно получить цикл, чтобы одномерный массив был заполнен последовательно в столбце , а вот что у меня в файле не работает.... пишет ошибку 9  и ругается на строчку redim
Перебор переменных и запись их в массив
 
Уважаемые форумчане!! Прошу помощи кто понимает в массивах)))

Суть проблемы такова: сначала задумывался файлик для загрузки отчетности в контур - написал макрос, который преобразовывал таблицу в необходимую структуру и всё работало, пока наше законодательство в очередной раз не поменялось и файлик из 1000 строк превратился в 99000. Макрос также прекрасно работает, но ооооочень долго... примерно уходит 20 минут на создание необходимой структуры в 400 000 строк.... В связи с этим было принято решение перевести макрос с листа в массив и преобразовать там -  и уже на лист выводить результат. - читал что это должно существенно сократить время обработки.
До этого никогда с массивами не работал - так как это для меня темный лес... В файле я набросал макрос, но так и не получилось создать одномерный массив - не получается у меня перебирать данные и записывать их новый массив. что я не так делаю?!!!
Подгонка данные исходной таблицы под форму загрузки, Работа с массивами, макрос
 
Добрый день коллеги.

Прошу помощи: написал макрос (не пинайте сильно - знаю что он корявый - только учусь), но не нравится как он работает.
Суть задачи была такова: - есть исходный файл и есть загрузочный. Необходимо написать макрос, который открывал исходник, делал манипуляции со столбцами (делил или соединял) - подгонял под загрузочную форму. Так вот я это все проделал, но когда начинаю данные переносить из массива обратно - я это делаю циклом в каждую ячейку файл зависает на очень долго ( рабочая зона более 15 тыс строк). Я подумал что можно как-то копировать столбцами из массива, но к сожалению я не знаю как.
Скрытый текст
разноска ячеек на другой лист по нескольким критериям
 
Огромное спасибо!!! классно работает!!! так как я начинающий и стараюсь учиться, если не сложно, можно объяснить часть макроса.
Вот с этого момента не понятно ( с with никогда не приходилось работать).
Код
With sh2
While .Cells(i, 2) <> ""
If Len(.Cells(i, 2)) > 4 Then
.Cells(i, 2).Cut .Cells(i, 2).Offset(, 1)
End If
i = i + 1
Wend
End With
В ближ будущем выложу свой макрос сюда (включая ваш код), чтобы могли оценить творение, прокомментировать, может, что скорее всего, предложения  упростить. ну и если кому надо пользовались.)))

Еще раз спасибо!!!
разноска ячеек на другой лист по нескольким критериям
 
У меня, к сожалению, почему то не работает этот макрос. Прилагаю файл с примером.на последнем листе как должно получиться - я так и не нашел.
разноска ячеек на другой лист по нескольким критериям
 
Добрый день всем!!
Помогите пжл с файлом - в макросах только начинающий (знаю только примитив).
Опишу ситуацию: на первом листе есть диапозон сумм (затраты) и в соседнем столбце стоит их признак - код.
На след лист нужно скопировать эти значения и разнести в соотвестующие колонки эти кода в зависимости от кол-ва символов.

Например, на лист 2 в колонку а скопировать суммы; в колонку B скопировать код, который стоит напротив этой суммы на листе 1, еслив нем символов больше 4-х, в колонку С - все что меньше 4-х. как это сделать не знаю.
Я вот написал что такое, но оно копирует почему то сразу в 2 колонки:
Код
Sub avtofill_Input()
Dim i As Variant
Dim g As Integer
Dim lLastRow As Long
Dim s As Range
Sheets("Introduction".Select
Range("C11".Select
Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    
Sheets("Input".Select
Range("R7".Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Introduction".Select
Range("B11".Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy

lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
i = Range(Selection, Selection.End(xlDown)).Select
'g = Len(s)
For Each s In ActiveSheet.Range("B11:B" & lLastRow)
If Len(s) > 5 Then
Sheets("Input".Select
Range("AE7".Select
ActiveSheet.Paste
Else
Sheets("Input".Select
Range("BC7".Select
ActiveSheet.Paste
End If
Next
End Sub
Страницы: 1
Наверх