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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2011, 11:32   #1
Любопытная
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 12
По умолчанию Одинаковым данным-одинаковый номер!

Есть фаил-выгрузка из БД,где содержатся идентичные наименования,РАНЕЕ у которых были разные номера, теперь нужно для всех повторяющихся наименований сформировать единый номер из уже имеющихся( например копируется первый из номеров этой группы и присваивается всем).Не приложу ума как сделать(
Вложения
Тип файла: zip ЮТТ НоменклатураРЕДАКТ.zip (5.15 Мб, 23 просмотров)
Любопытная вне форума Ответить с цитированием
Старый 01.08.2011, 13:01   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Задача не из простых.
Написание макроса требует время.Если затраченое время будет компенсировано, то
стучитесь в асю,личку.могу решить вашу проблему
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.08.2011, 13:08   #3
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Для столбца С лучше отнимать еще один знак (пробел)
Код:
=ЛЕВСИМВ(RC[-1];НАЙТИ("№";RC[-1])-2)
Новый номер
Код:
=ЕСЛИ(ПОИСКПОЗ(C2;$C$2:C2;)=СТРОКА(1:1);ПСТР(B2;ПОИСК("№";B2)+1;10);ВПР(C2;$C$2:D2;2;))
=ЕСЛИ(ПОИСКПОЗ(RC[-1];R2C3:RC[-1];)=СТРОКА(R[-1]);ПСТР(RC[-2];ПОИСК("№";RC[-2])+1;10);ВПР(RC[-1];R2C3:RC;2;))
Если возможен номер более 10 знаков, заменить "10" в функции на большее число.
vikttur вне форума Ответить с цитированием
Старый 02.08.2011, 07:06   #4
Любопытная
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 12
Хорошо

vikttur!Большое спасибо!
Любопытная вне форума Ответить с цитированием
Старый 02.08.2011, 07:29   #5
Любопытная
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 12
Вопрос *мысельки*

Мне кажется, что преобразовав формулу:
=ЕСЛИ((СЧЁТЕСЛИ(RC[-1]:R[26071]C[-1];RC[-1]));(СЧЁТЕСЛИ(RC[1]:R[26071]C[1]))RC[1]
можно добиться желаемого, но RC[1]-это явно не то , что я хочу увидеть, а какую еще функцию внести, чтобы номер повторялся для всех одинаковых данных , я не знаю :'((( все перепробовала..( ну это я так наивно полагаю)
Любопытная вне форума Ответить с цитированием
Старый 02.08.2011, 09:40   #6
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Пример женского непостоянства
Цитата:
Сообщение от Любопытная Посмотреть сообщение
vikttur!Большое спасибо!

Мне кажется, что преобразовав формулу...
Не понял, в чем проблема?
vikttur вне форума Ответить с цитированием
Старый 02.08.2011, 09:50   #7
Любопытная
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 12
По умолчанию

С вашей формулой проблем нет! Она как нельзя правильная)
я насчет своей проблемы с записью номеров для одинаковых позиций- у меня при такой формуле( само собой разумеющееся) в столбик "новый номер" переносятся все номера из столбика 1, а надо чтобы все одинаковый позиции имели одинаковый номер( ну собственно с этой проблемой я сюда обратилась).Ну я предположила, что кто-то поймет как "дописать" чтобы получилось)
Любопытная вне форума Ответить с цитированием
Старый 02.08.2011, 09:58   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Макросом можно так - перебираем данные и заносим в словарь. Первый раз встретили - в итем словаря кладём номер. Встретили второй раз - извлекаем номер из итем и присваиваем.
Если данных много и работа не разовая - делаем через массивы.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 02.08.2011, 10:17   #9
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Называли бы по-другому, а то и серийный номер, и МС номер
Если теперь правильно понял:
Код:
=ЕСЛИ(ПОИСКПОЗ(C2;$C$2:C2;)=СТРОКА(1:1);A2;ИНДЕКС($A$2:A2;ПОИСКПОЗ(C2;$C$2:C2;)))
=ЕСЛИ(ПОИСКПОЗ(RC[-1];R2C3:RC[-1];)=СТРОКА(R[-1]);RC[-3];ИНДЕКС(R2C1:RC[-3];ПОИСКПОЗ(RC[-1];R2C3:RC[-1];)))
vikttur вне форума Ответить с цитированием
Старый 02.08.2011, 11:20   #10
Любопытная
Пользователь
 
Регистрация: 29.07.2011
Сообщений: 12
По умолчанию

нет.данная формула возвращает содержание столбика '||T.NMGDSRV
Любопытная вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислить номер месяца, имея номер недели? Ras2im Microsoft Office Excel 17 07.10.2012 03:31
PageControl. На каждой фкладке одинаковый врейм но действие на всех разное. Человек_Борща Общие вопросы Delphi 4 06.05.2011 18:03
Преобразовать массив данных по одинаковым значениям kataRios357 Microsoft Office Access 3 22.04.2011 09:33
слова с одинаковым началом и концом shelest Помощь студентам 2 28.02.2010 15:07
одинаковый код в процедурах jungle Помощь студентам 7 26.11.2008 22:45