Jack Famous, спасибо, я просто понял, зачем это всё нужно (новая тема и название) и постарался сделать так, чтобы форум получил максимальный эффект На моих объёмах да, всё идеально. Первый раз когда совсем всё в ручную делалось я понял, что на за полчаса обработаю только 9000 строк. Сейчас 111 000 строк )
Существует ли способ быстрого объединения таблиц в одну, последовательно? 1. Таблицы не имеют шапки 2. Таблицы по 100 строк и 6 столбцов. 3. Таблицы расположены на одном листе, друг за дружкой. Таблиц таких может быть до 45 штук
Данные не должны перемешаться, объединиться или как-то ещё измениться. Нужно просто расположить их вертикально друг за дружкой без разрыва, по сути сделать одну длинную таблицу.
В оригинале стобцы в таблицах-исходниках никак не подсвечены и не названы, в файле-примере я для удобства восприятия их покрасил. В файле-примере лист1 - это то, что есть, лист2 - то, что должно получиться.
PS а есть какой способ, объединения получившихся таблиц в одну, последовательно? без копипаста руками, а то вчера скинули материала на 470 столбцов ещё При том, что теперь я точно знаю, что в базе значений всегда 600, т.е. 6 столбцов в итоговой таблице будет
Пытливый, да уж, в предложение уместили то, что реально нужно сделать 1. Не с J1, либо со столбца AW, либо на другом листе 2 Всегда подряд идут, все по 100 значений 3 Это самый лучший вариант
Есть только 1 момент, в исходных столбцах 1-е 100 значений попадают в 1-й столбец итоговой таблицы, 2-е 100 значений попадают во 2-й столбец итоговой таблицы, 3-е 100 значений в 3й столбец и т.д..
Юрий М, 1. Как уже выше ответил Пытливому, да, любой 2. Значения в исходных столбцах по 100 строк идут, да 3. Либо со столбца AW, либо другой лист)
Не понимаю, какой я тогда файл должен сбросить? Сам скрипт работает так, как нужно. Он просто работает медленно. Как было и как нужно - это выполнение скрипта не 10 секунд, а 1 секунду. Я описал выше, в каком случае это возможно.
Столбец J и далее - это получившаяся таблица из столбца А
Пытливый, начну с пункта 3 Я не знаю vba совершенно, максимум что смог сделать - найти этот код, который частично задачу решает и для оптимизации работы добавить строку с подсветкой "уже обработанного столбца-донора". Искал и на форуме этом и в принципе в гугле, видимо моих познаний не хватает, чтобы правильно сформировать запрос. Т.к. "ограничить число строк в vba" и схожие запросы выдают не то.
Пункт 1. Исходя из пункта 3, описал так, как смог Пункт 2. Файл приложил.
Задача у меня простая: мне нужно обработать 290 столбцов, в файле примере заполнены A-С столбцы, А уже обработан.Это столбцы-доноры. Результат обработки - начинается со столбца J. Столбец А содержит 400 значений и больше, но всегда кратно 100. Мне нужно этот столбец разбить на несколько столбцов по 100 значений в каждом. Каждый последующий столбец добавляется в конец получающейся таблицы, которая начинается с J. По итогу обработки получится длинная таблица из 4-6 столбцов. При работе макроса он спрашивает диапазон - я просто тыкаю на название столбца. Выделять диапазон руками или прописывать его каждый раз - ещё дольше, чем просто 10 секунд подождать, пока макрос работает. Куча времени уходит на то, что макрос из столбца донора обрабататывает ВСЕ ячейки (я уже нагуглил, что всего их больше миллиона), пустые в том числе. Как сделать, чтобы он обрабатывал либо только заполненные, либо только НЕ больше 1000, я не знаю. В параметрах листа если установить видимый диапазон меньше, то пропадает возможность "тыкнуть" на имя столбца. В общем этот метод не сработал.
Всем привет! Друзья, помогите ускорить вот этот макрос:
Код
Sub SplitColumn()
'Updateby20141106
Dim rng As Range
Dim InputRng As Range
Dim OutRng As Range
Dim xRow As Integer
Dim xCol As Integer
Dim xArr As Variant
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
xRow = 100
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Cells(InputRng.Row, InputRng.Column).Resize(InputRng.Rows.Count, 1).Interior.Color = 15773696
Set InputRng = InputRng.Columns(1)
xCol = InputRng.Cells.Count / xRow
ReDim xArr(1 To xRow, 1 To xCol + 1)
For i = 0 To InputRng.Cells.Count - 1
xValue = InputRng.Cells(i + 1)
iRow = i Mod xRow
iCol = VBA.Int(i / xRow)
xArr(iRow + 1, iCol + 1) = xValue
Next
OutRng.Resize(UBound(xArr, 1), UBound(xArr, 2)).Value = xArr
End Sub
Он разбивает информацию в одном столбце на табличку из нескольких столбцов, в каждом из которых 100 значений только. В столбце-доноре заполненных ячеек от 600 до 2000 штук. Проблема такая, что при работе нужно выделять полностью столбец (т.е. автоматом вводятся значения, например $A:$A), вписывать вручную или выделять вручную диапазон - не вариант, ещё дольше будет (т.к. столбцов много). И из этой проблемы вытекает следующая: на 1 столбец скрипт выполняется 10 секунд, потому что просчитывает все 1кк строчек в этом столбце. Пробовал вручную выделять диапазон в 600 строк - делает мгновенно
Как сделать так, чтобы макрос вычислял не более 1000 или 2000 строк в столбце? В идеале конечно, чтобы он просчитывал только заполненные ячейки.