Страницы: 1
RSS
как макросом вытащить из ячейки с большим числовым значением 2 первые цифры
 
Добрый день!  
Очень нужна помощь понимающих в макросах людей.  
Дело в том, что мне очень нужно чтобы из ячейки со значениями можно было как-то выковырять 2 первых знака и по ним найти в другой таблице данные.  
Я только учусь писать макросы, и попробовала через макрорекордер написать с помощью формулы ПСТР - эта часть получилась, но, к сожалению, числа выходили в текстовом формате (как после любой формулы, если скопировать ее и вставить значения), перевод формата не помог - ячейки были хоть и в числовом формате - значек ошибки все равно выходил.  
Во второй части (там где нужно найти по этим двум цифрам данные), тоже я думаю можно макрос (я планировала через макрорекордер формулу ВПР прописать).    
И совсем не знаю как все это сделать чтобы не видно было всех вычислений, а только результат.  
Пример прилагаю.На первой странице значения, из которых надо выковырять 2 первые цифры, на второй - данные, которые надо к этим цифрам приделать.  
 
Все заранее спасибо!
 
Без макросов :)
 
А с макросами?)    
К сожалению, нужно чтобы кнопочку нажал и все :)
 
Формулисты, кто следующий?  
:))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
с макросами )
Редко но метко ...
 
Sub bb()  
With Range("A2", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1)  
   .Formula = "=INDEX(данные!$A$1:$A$999,MATCH(--LEFT(A2,2),данные!$B$1:$B$999,))"  
   .Value = .Value  
End With  
End Sub
 
ОООО! Спасибо всем преогромнейшеее!!!! Вы мне очень помогли!!!!!
 
Снова нужна ваша помощь в этом же вопросе.  
К сожалению, оказалось, что в значениях данных есть число 10, к которому могут быть 2 значения, в зависимости от следующих двух цифр. Т.е. у наших длинных чисел мы берем две первые цифры (пример во вложении) и подтягиваем яблоки и апельсины, но если эти две цифры 10, то нужно смотреть по следующим 2 цифрам (только 2 исключения) - получится, что если 1001 - то груши, а если 1002 - то сливы.  
Пробовала в макросе написать if, но если вставляла в конец записи, ничего не происходит, если в середину - выдается ошибку...  
Помогите, пожалуйста, разобраться!  
Всем заранее большое спасибо!
 
(простецкий)...
 
Решение есть, поэтому код писать не буду.  
Но я бы делал на словаре - так намного быстрее на большом объёме, чем циклом в цикле.  
А на этом малом проще код :) (т.к. тут скорость не важна, на 10 записей...)  
Сперва собрал в словарь (и возможно параллельный массив, если связанных данных много) данные второго листа (ключ - 2 или 4 цифры, сколько зададите), затем циклом по первому листу искал в словаре сперва по двум цифрам, если не найдено - ещё раз по четырём.  
Так всего два перебора диапазона.  
Можно словарь (с массивом) сделать публичным (заполнить его при открытии файла или по кнопке) и поставить работу кода на событие изменения первого столбца - так можно мнгновенно получать результат даже из огромной базы (хотя на 2 или 4 цифры база огромной быть не может... ну а если 7 или 10?)
 
Спасибо большое! Попробую разобраться и адаптировать пример под свой список.  
Я выложила здесь просто пример (поэтому он маленький), а так список около 1000 строк.  
Только последий ответ совсем не поняла((((
 
А формулой реально учесть все эти условия?
 
На 1000 строк думаю разницы не заметите - на словаре или двойным перебором работает.  
Так что мой ответ скорее как информация к размышлению - что есть другой вариант макроса, побыстрее.  
Формулу писать не возьмусь - но вероятно можно сперва искать по четырём знакам, а если ошибка - то по двум.
 
Спасибо, но мне пока тяжело осмылить как сделать двойной перебор, чтобы он был именно двойным, а не исключал один другого...))))
 
Написал :)  
 
=IF(ISNA(INDEX(данные!$A$1:$A$999,MATCH(--LEFT(A9,4),данные!$B$1:$B$9,))),INDEX(данные!$A$1:$A$999,MATCH(--LEFT(A9,2),данные!$B$1:$B$9,)),INDEX(данные!$A$1:$A$999,MATCH(--LEFT(A9,4),данные!$B$1:$B$9,)))
 
Т.е. сперва отрабатывает формула Казанского (ну или вариант Владимира думаю тоже подойдёт) по 4-м цифрам, если она дала ошибку - то она же но уже по 2-м.
 
оооо! огромное спасибо!!! вы просто спасли!!!!!!
 
Да, забыл сказать - я критерии 2/4 цифры писал в одну ячейку, а не в 2, как у Вас в примере (для простоты).  
Думаю (но не уверен), что несложно формулу скорректировать и на 2 ячейки.  
Ну в любом случае можно из двух сделать одну в допстлбце...
 
да, спасибо) теперь все просто)))
Страницы: 1
Наверх