Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 20:58   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Сверить Данные

Как мне организовать сверку данных?
В яч. д3:д33 вводятся данные с накладной, накладных бывает от 1 - 5 шт.
В столбце F отображается сумма по товару.
Нужно, что бы в а11 показывала сумму(F3:F33), введенных данных которую я сравню с накладной....
Организовать с одной накладной просто, НО, как поступить со следующими накладными?
Как сделать, что бы эксель понимал, эта 1 накладная и в а11 соответствующая сумма, а это, вторая и в а11 сумма.... пятая и а11 сумма!!
Данные в а11 нужны один раз, визуально сверил, все, они не нужны.
Товар по накладным может "бегать" от 3 до 33 позиции, системы нет.

Я поменял вложение, теперь там будет все понятно
Исправил ошибку
Вложения
Тип файла: rar Январь.rar (61.1 Кб, 12 просмотров)

Последний раз редактировалось valerij; 10.01.2010 в 12:27.
valerij вне форума Ответить с цитированием
Старый 09.01.2010, 22:16   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Товар по накладным может "бегать" от 3 до 33 позиции, системы нет.
если нет системы - значит нет возможности "научить" эксель...
Валера, возможно, то что вы не нашли (не видите) системы - не значит что ее нет. Без самих данных вряд ли кто тут определит наличие системности в расположении данных.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.01.2010, 22:53   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
если нет системы - значит нет возможности "научить" эксель...
Валера, возможно, то что вы не нашли (не видите) системы - не значит что ее нет. Без самих данных вряд ли кто тут определит наличие системности в расположении данных.
Игорь, а если к примеру, так:
в а10 вып. список от 1 до 5, выбрал 1-цу, начинается ввод, сумма отразилась в а11, сверил,
выбрал 2-ку, сбросилось(а11=0), начинается ввод, новая сумма отразилась в а11, сверил, выбрал 3-ку, сбросилось(а11=0)...
А данные, не важно, можно самому ставить, любые целые числа от 0 до 100, во вложении я показал, как.

Я просто не знаю, как написать такой алгоритм.
Что -то типа так:
Код:
Cells(Target.Row, 6) = Cells(Target.Row, 4) * Cells(Target.Row, 5)
        If [a10] = 1 Then [h5] = Application.Sum([F3:F33]): [a11] = [h5]
        If [a10] = 2 Then [h6] = (Application.Sum([F3:F33]) - [h5]): [a11] = [h6]

Последний раз редактировалось valerij; 10.01.2010 в 01:54.
valerij вне форума Ответить с цитированием
Старый 10.01.2010, 14:00   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение
Вложения
Тип файла: rar Книга247.rar (82.6 Кб, 15 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.01.2010, 15:29   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
см.вложение
Игорь!
Красные и синие цифры -это ну, как вариант примера, вот еще др. вариант:
1. Накладная, данные в д3, д4 и д8, как видишь две последние яч. попали в синий, а у тебя, уже считать их не будет
2. Накладная, данные в д5 в красную область, опять не считает.

Ну как объяснить?
О, представь, есть два тек. файла(вложил), с имитируем накладные, введи данные с них.
Думаю так, тебе легче будет.

Игорь когда была система, накладные были по заводам, 4 -завода, четыре разных накладных, все было просто, теперь остался один завод, три похерены без возрождения, и "каша"....
Вложения
Тип файла: rar Накладные.rar (552 байт, 17 просмотров)
valerij вне форума Ответить с цитированием
Старый 10.01.2010, 22:08   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Красные и синие цифры -это ну, как вариант примера, вот еще др. вариант:
замечательно. а как мне их было еще отличать? и как мне знать что еще будет в других вариантах и в третьих
Цитата:
1. Накладная, данные в д3, д4 и д8, как видишь две последние яч. попали в синий, а у тебя, уже считать их не будет
- это не у меня, у тебя считать не будет. а у меня все хорошо, там где надо, там считает.
да, в примере, который я сделал, есть одно ограничение не дающее полностью автоматического рассчета - сначала ячейке нужно задать цвет текста, а затем вносить количество, так сумма будет получена автоматом. Валера, текст программы у тебя перед глазами, там двадцать строк написано, разобраться как два пальца об асфальт. Так вот, из листинга видно, что расчет происходит когда изменилось значение в А10 или в 4-м столбце. Понятно, когда сначала написать количество отрабатывает процедура "изменились данные". данные на момент работы процедуры могли иметь цвет по умолчания, и соответсвенно не попали в расчет потому что по цветовому признаку пока не относятся ни к красным ни к синим. Если закрасить потом ячейку нужным цветом, изменился формат определенной ячейки но не данные в ней. Не произошло событие, на которое должна была отреагировать программа. Вобщем описывать тут дольше, чем код посмотреть.

Пользуясь случаем, вопрос знатокам по сути данной темы:
какими средстввами ВБА словить событие изменение формата ячейки? вижу только SelectionSchange, но тут другой вопрос, где в SelectionSchange найти ячейку (диапазон) с которого фокус убежал на Target?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.01.2010, 23:42   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
сначала ячейке нужно задать цвет текста, а затем вносить количество,
Игорь, это не возможно, ты представляешь, что сначала надо просмотреть накладную, расставить цвет, а затем вводить данные.
Вот посмотри, реальная, отсканированная накладная, убрал все лишнее.
В черном прямоугольниках, мои данные

Как то следить за Target -ом, при 1 в а10, сумма Targetа одна, а при 2 в а10, сумма Targetа другая
Изображения
Тип файла: jpg nn.jpg (342.3 Кб, 136 просмотров)

Последний раз редактировалось valerij; 10.01.2010 в 23:56.
valerij вне форума Ответить с цитированием
Старый 11.01.2010, 14:33   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Так моя задача, решаемая?
valerij вне форума Ответить с цитированием
Старый 11.01.2010, 15:48   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
какими средствами ВБА словить событие изменение формата ячейки? вижу только SelectionСhange, но тут другой вопрос, где в SelectionСhange найти ячейку (диапазон) с которого фокус убежал на Target?
Увы, никак не отловить.

SelectionChange тут не поможет - событие срабатывает при изменении выделения на листе.
Определить, какая ячейка была выделена до этого - в принципе, можно,
(при каждом срабатывании SelectionChange записывать адрес выделенного диапазона в глобальную переменную),
но узнать, изменялось ли форматирование ранее выделенной ячейки - никак...

Разве что знать, в каком столбце какое изменение форматирования ожидается - и каждый раз по событию SelectionChange проверять наличие определённых изменений (к примеру, стал ли шрифт наклонным)
А если выделение на листе не меняется (то есть пользователь форматирует одну и ту же ячейку, не выделяя другие) - тогда вообще никак.
EducatedFool вне форума Ответить с цитированием
Старый 11.01.2010, 15:54   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а) задача уже решена (вноси данные, раскрашивай, поставь курсор в А10, нажми энтер, читай в ячейке ниже значение)
б) задумка с цветом не моя. я работал с твоими данными как ты их организовал.
Цитата:
это не возможно, ты представляешь, что сначала надо просмотреть накладную, расставить цвет, а затем вводить данные
согласен считаю это крайне неудобно. чуть-чуть упростит эту процедуру скопировать предыдущее значение уже правильного цвета, вставить в ячеку, потом изменить значение на такое как надо.
Цитата:
Как то следить за Target -ом, при 1 в а10, сумма Targetа одна, а при 2 в а10, сумма Targetа другая
а зачем за ним следить? ставишь 1 - к накладной номер 1 относятся все данные того же цвета, что и первое количество а таблице. ставишь 2 - следующий цвет, не равный первому, который нашелся в таблице будет отнесен ко всем данным из второй накладной.
Скажи-ка мне еще если в разных накладных есть один и тот же товар допустим разное количество, как ты собираешься это вносить в таблицу? и проверять результаты?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 11.01.2010 в 15:57.
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сверить между собой данные двух файлов excel? Vadim_abs Microsoft Office Excel 8 10.11.2009 13:04
Удаленные данные SunTrader Microsoft Office Excel 2 10.11.2009 11:44
Отобразить данные SlavaSH БД в Delphi 8 29.06.2009 15:56
Данные в Edit program123 Общие вопросы Delphi 5 08.05.2009 18:12
данные бд elfers БД в Delphi 5 02.04.2009 12:38