Страницы: 1 2 След.
RSS
Ввод кода в ячейку и поиск данных, Макрос
 
Доброе время суток!
Прошу сразу не ругать если не туда обратился я в этом деле новичок. Вообще задача такова: на листе 1 в ячейку А2 вводить код и делать поиск с листа 2 и выводить данные в лист 1 в таблицу. В колонку приход на листе 2 добавлять единицу. Если код повторяется то в колонку приход на листе 2 добавлять плюс единицу. Не знаю правильно ли я объяснил. Также прикрепляю файл в котором написал макрос ввод кода в таблице и вывод информации в этой же таблице, а на листе 2 добавляю единицу. Извините но не знаю ка добавить файл 11МБ пришлось разбить. Заранее благодарен.
 
Цитата
asterisk написал: Извините но не знаю ка добавить файл 11МБ пришлось разбить
А вот так не пойдёт. Читайте Правила (п. 2.3) - суммарный объём не должен превышать 100К. Файлы удалил. Не верю, что нельзя создать файл-пример до 100К.
 
Извините Юрий попробую вот так.
 
а почему в файле только 1 лист, когда в вопросе фигурируют 2 листа? ))))
В таблице на листе 1 только одна строка - всегда? И в нее выводятся данные с листа 2 по совпадению кода?
В таблице на листе 2 только одна строка? или много?
А если в таблице на листе 2 уже в графе приход есть какое-то число, то все равно писать единицу вместо него? или прибавлять?
А что делать, если в таблице на листе 2 не найден код?
F1 творит чудеса
 
asterisk, Вас не смущает, что файл с одной страницей текста весит 10 МБ?
На "лист1" последней ячейкой является EZ28953, т.е. считается занятым диапазон 156 столбцов х 28953 строки.
Для исправления подобных листов и книг можете использовать следующие макросы. Поместите их в модуль "личной книги макросов" и вызывайте через F8 при работе с любой книгой - возможно, у Вас есть и другие "раздутые" файлы".
Скрытый текст
Изменено: Казанский - 23.03.2015 17:19:36
 
Добрый вечер! Да действительно что то я не обратил внимание на объем, Извините попробую переделать пример, Максим попробую переделать пример и отвечю на вопросы.
 
Добрый вечер! Прикрепляю измененный пример 1. В нем все описал даже не большой код написал прошу сильно не ругать. Все исправил и изменил.
 
Дополнительный вопрос:
При срабатывании макроса на лист1 вывелось все в таблицу, во второй таблице увеличился приход, все хорошо. А дальше, если вводим еще один код - таблица на листе1 должна быть очищена и снова заполнена уже новым кодом? Или второе значение должно быть добавлено в таблицу на лист1?
Кому решение нужно - тот пример и рисует.
 
Здравствуйте Пытливый
Нет. Второе значение должно быть добавлено в таблицу на лист 1 и т.д.
 
Здравствуйте. Проверяйте.
Кому решение нужно - тот пример и рисует.
 
Здравствуйте! Огромное спасибо буду проверять.
 
Здравствуйте!
Проверил вроде бы оно но только я не понял почему на лист 1 не выводится все данные которые указаны на листе 2. Вы меня извините, может быть я не так объяснил но хотелось бы так:  если значение найдено на листе 2, то к этому значению на листе 2 в 6 столбец увеличивать данных на 1 и потом копировать все данные из найденной строки в строку на лист 1. И если код повторится, то на лист 1 не добавлять новую строку а изменить только количество в этой строке.
Заранее Благодарен!!!
 
На лист1 столбец "количество", на лист2 столбец "приход". Это одно и то же?
Алгоритм:
1.Если код не найден - сообщение и конец процедуры
2. Если код найден - увеличиваем значение в столбце "приход"
3. Если код есть в таблице на лист1 - увеличиваем значение в столбце "количество".
4. Если кода на лист1 нет - переносим строку с лист2

Так?
Кому решение нужно - тот пример и рисует.
 
Добрый вечер еще раз!
ВСЕ РАЗОБРАЛСЯ!!!!!! Поменял местами строчки
.Cells(lngI, 6) = .Cells(lngI, 6) + 1
и в этой строке изменил на 6     .Range(.Cells(lngI, 1), .Cells(lngI, 6)).Copy WhReport.Cells(lngJ + 1, 1)
ОГРОМНОЕ ВАМ СПАСИБО!!!!!!!!!!!!!!!!!!!!
Изменено: asterisk - 27.04.2015 23:26:34
 
Добрый день! Пытливый.
Скажите пожалуйста как сделать если код есть в таблице на листе 1 то не добавлять новую строку этого же кода на листе 1, а просто  делать изменения прихода.
И как в этой строчке .Range(.Cells(lngI, 1), .Cells(lngI, 6)).Copy WhReport.Cells(lngJ + 1, 1) выводить определенные столбцы (к примеру A,B,D). Что то у меня не получается там как-то через квадратные скобки нужно делать и не могу понять.  
 
Добрый день.
Я в сообщении #13 задал вопрос. Ответ на него какой?
Кому решение нужно - тот пример и рисует.
 
Добрый вечер! Пытливый.
Извините, что не ответил на Ваш вопрос. Да алгоритм должен быть такой.
Но 3 позиция в алгоритме:  если код есть в таблице на лист 1 - увеличиваем значение в столбце "количество", не срабатывает.
Изменено: asterisk - 29.03.2015 22:22:33
 
Добрый день.
Проверяйте
Кому решение нужно - тот пример и рисует.
 
Добрый вечер! Пытливый.
Проверил  работает не корректно. Ввожу первый код все хорошо, ввожу второй код работает нормально, когда ввожу еще раз второй код начинает прибавлять первому коду. Бывает что вводишь четвертый код тоже прибавляет первому коду. Если Вам не трудно могли бы Вы сказать что означают эти строчки
Код
If Not .Range("A5:A" & .Range("A5").CurrentRegion.Rows.Count + 5).Find(.Range("A3"), LookIn:=xlValues) Is Nothing Then
Cells(.Range("A5").CurrentRegion.Find(.Range("A3"), LookIn:=xlValues).Row, 6) = _
Cells(.Range("A5").CurrentRegion.Find(.Range("A3"), LookIn:=xlValues).Row, 6) + 1


Извините копирую и вставляет смайлики.
Изменено: asterisk - 31.03.2015 22:12:00
 
Строчки означают, если на листе отчета в диапазоне столбца А с А5 по последнюю заполненную ячейку нашлось значение ячейки А3 (т.е. на отчете уже есть искомый код), то к значению ячейки в 6 столбце из строки, в которой нашелся код прибавляем 1.
Странно, я, вроде, все сочетания тестировал, сейчас еще проверю.

З.Ы. Вроде, нашел косяки все. Как обычно у меня - банальная невнимательность в длинных конструкциях. Проверяйте.
Изменено: Пытливый - 27.04.2015 23:27:22
Кому решение нужно - тот пример и рисует.
 
Доброе время суток! Пытливый.
Вы конечно меня извините но так же без изменений. Вводишь 1 код нормально. Вводишь 2,3,4, коды на листе 1 он все равно прибавляет к 1 коду, особенно когда вводишь последную строку он постоянно добавляет к 1 коду на листе 1.

А можно как нибудь сделать условие примерно такое я правда не знаю как описать переменную и там еще что-то...... После того как код есть на листе 1 сравнивать с ячейкой А3 и так же добавлять 1 на лист 2 в 6 столбец и копировать.
Код
if WhReport.Range("A3") =cells(столбец А лист 1) then 
.Cells(lngI, 6) = .Cells(lngI, 6) + 1   
и копировать всю строку с листа 2  на лист 1
или только 6 столбец с листа 2 в столбец 6 на лист 1
сверху этого кода ну или после этого кода
Код
If .Cells(lngI, 1) = WhReport.Range("A3") Then
lngJ = WhReport.Cells(WhReport.Rows.Count, 1).End(xlUp).Row                       
 .Cells(lngI, 6) = .Cells(lngI, 6) + 1
.Range(.Cells(lngI, 1), .Cells(lngI, 6)).Copy WhReport.Cells(lngJ + 1, 1
Еще раз извините если что-то не так написал. Заранее благодарен.
 
Добрый день.
Проверяйте.
Кому решение нужно - тот пример и рисует.
 
Добрый вечер! Пытливый.
ВСЕ ЗАРАБОТАЛО!!! ОГРОМНОЕ ВАМ СПАСИБО!!! Если бы не Вы я бы наверно месяц а то и больше разбирался. Попробую на реальном списке.

А можно еще один вопрос!
Как сделать чтобы в А3 ввел 5 цифр ( ну допустим 10485) и макрос срабатывал автоматически без нажатия кнопки и enter.

И еще раз хочу по благодарить ВАС.
Заранее спасибо.
 
Enter нажать все-таки придется... :)
Проверяйте.
Кому решение нужно - тот пример и рисует.
 
Доброе время суток! Пытливый.
Спасибо Вам огромное! Все работает.
А не подскажите как в этой строчке .Range(.Cells(lngI, 1), .Cells(lngI, 6)).Copy WhReport.Cells(lngJ + 1, 1)  сделать вывод определенных столбцов например .Cells(lngI, 1), .Cells(lngI, 2), .Cells(lngI, 5), .Cells(lngI, 6). Пробую сделать не получается там как-то через квадратные скобки и не могу понять.

А так все работает ка нужно. Еще раз огромное Вам спасибо.  
 
Добрый день.
Разберем строчку кода
Код
 .Range(.Cells(lngI, 1), .Cells(lngI, 6)).Copy WhReport.Cells(lngJ + 1, 1)
Речь идет о копировании некоего диапазона с заданного листа в определенное место на другом листе
В общем виде:
ДиапазонКоторыйКопируем.Copy ДиапазонКудаКопируем
В данном случае копируемый диапазон задается через указание левой верхней и правой нижней ячейки диапазона 
Range(.Cells(lngI, 1), .Cells(lngI, 6))
Причем это диапазон НЕПРЕРЫВНЫЙ
В случае, если надо копировать лишь некоторые ячейки (каждая ячейка - это тоже диапазон, состоящий из одной ячейки) из данной строки (аналог - ручками выделять через Ctrl), в этом случае, на мой взгляд, уместнее использовать Union - т.е. объединение нескольких диапазонов.
Т.е. в общем виде как-то:
Union(Первый диапазон, второй диапазон, третий .... пятнадцатый).Copy
Кому решение нужно - тот пример и рисует.
 
Добрый вечер! Пытливый.
Спасибо за разъяснение, буду пробовать.
 
Доброе время суток! Пытливый.
Подскажите пожалуйста как сократить вот эту формулу:

=СУММ(E10;G10;I10;AF10;AH10;AL10;AN10;AR10;AT10;AX10;AZ10;BD10;BF10;BJ10;BL10;BP10;BR10;BV10;
BX10;CB10;CD10;CH10;CJ10;CN10;CP10;CT10;CV10;CZ10;DB10;DF10;DH10;DL10;DN10;DR10;DT10;
DX10;DZ10;ED10;EF10;EJ10;EL10;EP10;ER10;EV10;EX10;FB10;FD10;FH10;FJ10;FN10;FP10;FT10;FV10;
FZ10;GB10;GF10;GH10;GL10;GN10;GR10;GT10;GX10;GZ10;HD10;HF10)-СУММ(H10;J10;K10;L10;AG10;AI10;
AJ10;AK10;AM10;AO10;AP10;AQ10;AS10;AU10;AV10;AW10;AY10;BA10;BB10;BC10;BE10;BG10;BH10;BI10;BK10;
BM10;BN10;BO10;BQ10;BS10;BT10;BU10;BW10;BY10;BZ10;CA10;CC10;CE10;CF10;CG10;CI10;CK10;CL10;CM10;
CO10;CQ10;CR10;CS10;CU10;CW10;CX10;CY10;DA10;DC10;DD10;DE10;DG10;DI10;DJ10;DK10;DM10;DO10;DP10;
DQ10;DS10;DU10;DV10;DW10;DY10;EA10;EB10;EC10;EE10;EG10;EH10;EI10;EK10;EM10;EN10;EO10;EQ10;ES10;
ET10;EU10;EW10;EY10;EZ10;FA10;FC10;FE10;FF10;FG10;FI10;FK10;FL10;FM10;FO10;FQ10;FR10;FS10;FU10;
FW10;FX10;FY10;GA10;GC10;GD10;GE10;GG10;GI10;GJ10;GK10;GM10;GO10;GP10;GQ10;GS10;GU10;GV10;GW10;
GY10;HA10;HB10;HC10;HE10;HG10;HH10;HI10)
 
Убить ее сразу, потому что:
а) без файла она все равно обречена;
б) вопрос совершенно не по теме
 
А у меня родилась задачка в Избушку, на основании этой белеберды.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1 2 След.
Наверх