Добрый день! Сразу скажу, что я не программист, поэтому заранее извиняюсь за "неправильный" язык. Помогите пожалуйста решить такую задачу: Я скачиваю в формате excel таблицу, в которой есть реквизиты фирм. В таблице есть столбец, в котором в одном поле совмещены инн и наименование фирмы. Мне необходимо выделить ИНН в отдельный столбец. Я сделал макрос, который создает новый столбец, а затем при помощи цикла вставляет формулу с текстовой функцией в каждую строку столбца. Все работает, но крайне долго, так как размер таблицы бывает по 6-15 тыс строк. Я пробовал вариант с созданием в первой строке формулы, а затем копированием ее во все строки - тоже очень долго. Я предполагаю, что есть способ это сделать гораздо быстрее. Выложить файл не могу, так как выход в сеть с рабочей машины запрещен. Может быть кто подскажет такой способ? Заранее спасибо
Добрый день! Сразу скажу, что я не программист, поэтому заранее извиняюсь за "неправильный" язык. Помогите пожалуйста решить такую задачу: Я скачиваю в формате excel таблицу, в которой есть реквизиты фирм. В таблице есть столбец, в котором в одном поле совмещены инн и наименование фирмы. Мне необходимо выделить ИНН в отдельный столбец. Я сделал макрос, который создает новый столбец, а затем при помощи цикла вставляет формулу с текстовой функцией в каждую строку столбца. Все работает, но крайне долго, так как размер таблицы бывает по 6-15 тыс строк. Я пробовал вариант с созданием в первой строке формулы, а затем копированием ее во все строки - тоже очень долго. Я предполагаю, что есть способ это сделать гораздо быстрее. Выложить файл не могу, так как выход в сеть с рабочей машины запрещен. Может быть кто подскажет такой способ? Заранее спасибоIvm747
Пробуйте Текст по столбцам, на вкладке "данные". Или сделайте похожий пример из нескольких строк, чтобы было понятно чем ИНН отделен от названия в ячейке
Пробуйте Текст по столбцам, на вкладке "данные". Или сделайте похожий пример из нескольких строк, чтобы было понятно чем ИНН отделен от названия в ячейке SLAVICK
Быстрее будет собирать данные в МАССИВ в макросе, в нём уже выделять ИНН и выгружать его в отдельный столбец. Конкретней без примера (не нужен весь файл - набросайте 2-3 строки с данными вида как у Вас и прикрепите к своему следующему сообщению) сказать не могу.
Быстрее будет собирать данные в МАССИВ в макросе, в нём уже выделять ИНН и выгружать его в отдельный столбец. Конкретней без примера (не нужен весь файл - набросайте 2-3 строки с данными вида как у Вас и прикрепите к своему следующему сообщению) сказать не могу.Макрописец
ТЕРПЕНИЕ И ТРУД - ВСЁ ПЕРЕТРУТ!
Сообщение отредактировал Макрописец - Вторник, 30.06.2015, 19:49
Ivm747, И ничего не понятно. Неужели трудно создать файл, написать пару строк с данными как есть, и как нужно, чтобы они располагались - и выложить сюда?
Ivm747, И ничего не понятно. Неужели трудно создать файл, написать пару строк с данными как есть, и как нужно, чтобы они располагались - и выложить сюда?Макрописец
Извините, я Вам пишу с планшета(яблоко). Я не знаю как на нем создать файл, а потом еще и прикрепить его. Да и чего непонятного? В ковычках- содержание ячейки. В следующих ковычках - содержание второй строки столбца. И так далее. Мне нужно отделить в отдельный столбец ИНН ( цифровое значение) от наименования ( буквенное значение). Разделены они слэшем и пробелами вокруг него. Цифровое значение необходимо чтобы потом данные можно было систематизировать.
Извините, я Вам пишу с планшета(яблоко). Я не знаю как на нем создать файл, а потом еще и прикрепить его. Да и чего непонятного? В ковычках- содержание ячейки. В следующих ковычках - содержание второй строки столбца. И так далее. Мне нужно отделить в отдельный столбец ИНН ( цифровое значение) от наименования ( буквенное значение). Разделены они слэшем и пробелами вокруг него. Цифровое значение необходимо чтобы потом данные можно было систематизировать.Ivm747
Manyasha, Судя по первом посту - да Ivm747, Включите макрорекордер, затем выполните Текст по столбцам, на вкладке "данные", выключите макрорекордер, посмотрите получившийся код и скопируйте его в другой макрос (если это нужно.
Manyasha, Судя по первом посту - да Ivm747, Включите макрорекордер, затем выполните Текст по столбцам, на вкладке "данные", выключите макрорекордер, посмотрите получившийся код и скопируйте его в другой макрос (если это нужно.Макрописец
Мне кажется вариант с массивом будет поинтереснее. Если использовать данные по столбцам- то придется пользоваться циклом, а это займет столько же времени, сколько текстовая функция через цикл. А макрос хочу создать, потому, что алгоритм обработки файлов одинаковый, файлов бывает много. Каждый раз нажимать кнопки - глупо
Мне кажется вариант с массивом будет поинтереснее. Если использовать данные по столбцам- то придется пользоваться циклом, а это займет столько же времени, сколько текстовая функция через цикл. А макрос хочу создать, потому, что алгоритм обработки файлов одинаковый, файлов бывает много. Каждый раз нажимать кнопки - глупоIvm747
Включить рекордер. Скопировать столбец в нужное место. Выполнить текст по столбцам с разделителем "/", второй столбец пропустить. Выключить рекордер. Макрос готов.
Включить рекордер. Скопировать столбец в нужное место. Выполнить текст по столбцам с разделителем "/", второй столбец пропустить. Выключить рекордер. Макрос готов.RAN
Юзеру не нужны массивы. Юзеру нужно чтобы работало, и желательно быстро. Текст по столбцам будет, как минимум, не медленнее массивов, а, скорее всего, несколько шустрее.
Юзеру не нужны массивы. Юзеру нужно чтобы работало, и желательно быстро. Текст по столбцам будет, как минимум, не медленнее массивов, а, скорее всего, несколько шустрее.RAN
В целом получилось с данными по столбцам. Только пришлось вынести это деление за основную таблицу, потому что в тексте наименования клиента может попасться слэш и тогда появляется больше двух столбцов, и соответственно плывет остальная часть таблицы. Но всё равно большое спасибо за советы!
В целом получилось с данными по столбцам. Только пришлось вынести это деление за основную таблицу, потому что в тексте наименования клиента может попасться слэш и тогда появляется больше двух столбцов, и соответственно плывет остальная часть таблицы. Но всё равно большое спасибо за советы!Ivm747
Ivm747, вам необходим макрос такого типа.Если данные в столбце A,-в столбце B выводится ИНН,можно поменять в цикле значение индекса суммирования под ваши нужды.Я также пишу с планшета(яблоко)-все получается. С уважением к модератору и участникам обсуждения:
[vba]
Код
Sub exrt_inn() Dim w, i% For i = 1 To 2 w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
[/vba]
Ivm747, вам необходим макрос такого типа.Если данные в столбце A,-в столбце B выводится ИНН,можно поменять в цикле значение индекса суммирования под ваши нужды.Я также пишу с планшета(яблоко)-все получается. С уважением к модератору и участникам обсуждения:
[vba]
Код
Sub exrt_inn() Dim w, i% For i = 1 To 2 w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
Ivm747, эти два варианта вышеуказанного макроса можно применять при любом количестве строк ваших данных,счетчик цикла менять не надо..Предполагается,что ваши данные,начиная с ячейки A1 сплошным потоком(макрос1),либо с промежутками пустых строк(макрос2).
[vba]
Код
Sub extr_inn1() Dim w, i&, j& j = Range("A1").End(xlDown).Row For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
[/vba]
[vba]
Код
Sub exrt_inn2() Dim w, i&, j& j = Range("A" & Cells.Rows.Count).End(xlUp).Row For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
[/vba]
Ivm747, эти два варианта вышеуказанного макроса можно применять при любом количестве строк ваших данных,счетчик цикла менять не надо..Предполагается,что ваши данные,начиная с ячейки A1 сплошным потоком(макрос1),либо с промежутками пустых строк(макрос2).
[vba]
Код
Sub extr_inn1() Dim w, i&, j& j = Range("A1").End(xlDown).Row For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
[/vba]
[vba]
Код
Sub exrt_inn2() Dim w, i&, j& j = Range("A" & Cells.Rows.Count).End(xlUp).Row For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
Ivm747, Уточню,второй макрос,если в ваших данных есть пустые строки,к сожалению нет вашего файл примера
[vba]
Код
Sub exrt_inn2() Dim w, i&, j& j = Range("A" & Cells.Rows.Count).End(xlUp).Row On Error Resume Next For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub
[/vba]
Ivm747, Уточню,второй макрос,если в ваших данных есть пустые строки,к сожалению нет вашего файл примера
[vba]
Код
Sub exrt_inn2() Dim w, i&, j& j = Range("A" & Cells.Rows.Count).End(xlUp).Row On Error Resume Next For i = 1 To j w = Split(Range("A" & i).Value, Chr(32)) Range("B" & i) = w(0) Next i End Sub