|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
||||||
Сравнение строк по значению одного столбца и перезапись если есть совпадения02.11.2012, 11:54. Показов 7583. Ответов 81
Метки нет (Все метки)
Всем привет!
Я тут уже столько наспрашивала...Но мне это оч тяжело дается.. может знает кто как поступить в след. ситуации: у меня есть 2 файла эксель. С вашей помощью удалось копировать из одного листа в другой по параметру. Но сейчас условие усложнилось: если мы начинаем копировать, а у нас уже есть эта неделя (44 к примеру), то она должна записываться поверху (обновляться, грубо говоря). дополнительный параметр- фамилия (то есть если фамилия совпадает и неделя совпадает, то перезаписывается) вот то, что я пыталась сделать, используя предыдущие решения для копирования
Пока мне на SpecialCells выдает unable to get SpecialCells or Range property И я еще не пыталась вводить к критериям фамилию..
0
|
||||||
| 02.11.2012, 11:54 | |
|
Ответы с готовыми решениями:
81
В файл вводятся имена, пол и рост человека. Программа считывает данные из файла и выдает совпадения если в нем есть мужчины одного роста. Тема:работа
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 12:17 [ТС] | |
|
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 13:20 | |
|
Вообще-то в коде (в файле, на форуме вообще непонятный out_of_context кусок) много лишнего, т.к. вся разница между кликом и даблкликом - это 1 или -5
![]() Вот и заведите переменную (можно public вместо флага), её меняете кликами, затем выполняете копирование со сдвигом по этой переменной. Тогда код macro сократится до пяти строк. Второй вопрос сложнее, но решаем, причём несколькими способами. Я бы делал так - открыл книгу, куда копируем, циклом перебрал диапазон (через массив) и занёс в словарь сочетание фамилия|неделя c номером строки, где оно есть. Затем перед копированием поискал в словаре текущее копируемое сочетание, и если есть - то копировал в ту строку. Если нет - копируем в низ листа. Это думаю можно применить при любом итоговом коде - что в форуме или в файле. Но тогда немного непонятно, почему то 1, то -5? Файл в работе проверить не могу, т.к. сейчас нет 2007 - всё что могу, это посмотреть код
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 13:32 [ТС] | |
|
Hugo121, там даблклик уже не актуален...хотя я думаю, приготится еще
вот вы мне текстом написали, и я поняла что далеко мне даже до самого простого
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 13:45 | |
|
Ну почему далеко - scripting.dictionary совсем не сложная штука, и логически совершенно понятная.
Запомнили в словаре , что "вася|44" сидит в строке 15. Собрались копировать строку, где есть "вася|44", посмотрели в словаре - ага, копируем в 15. Нет там такого - копируем под таблицу. Всё, что Вам нужно - найти пример с scripting.dictionary и разобрать, как работает. Я тут уже кажется тройку написал - но правда последний (вчера) сложноват для понимания будет... Ну а цикл по строкам (чтоб занести в словарь) Вы уже вероятно сделать сумеете. Можно без массива, но через массив быстрее, если данных тысячи.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 13:58 [ТС] | |
|
Hugo121, а как мне задать имя и неделю?
имен более 200, есть в списке. я только знаю в каком столбце находятся фамилии неделя , как я понимаю, находится с помощью моего кода
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 14:23 | |
|
Ну Вы ведь выше писали - "если фамилия совпадает и неделя совпадает". Значит где фамили и неделя - Вы вероятно знаете. Правда я нашёл только неделю
![]() Вот берёте их и склеиваете в одно целое через разделитель (не обязательно, но так лучше/надёжнее в общем случае). кладёте в словарь. Аналогично позже проверяете. Добавлено через 20 минут Я думаю, что возможно Вам нужно это: 1. циклом по "получателю" запоминаем в словаре всех кто какие где. 2. циклом по "источнику" в другом словаре (!) собираем аналогичные данные. Причём в словаре запоминается последний номер строк вася|41, вася|42, вася|44. Если нужна только последняя неделя - тогда другие в словарь не заносим. 3. циклом по этому словарю перебираем все ключи (тут будут только номера строк с последними данными), ищем аналогичные в другом словаре и копируем (номера всех строк есть в словарях, если нет куда - копируем в конец). Так можно легко обновить все данные по всем фамилиям за все недели (если конечно в новом файле все свежие данные).
0
|
|
|
1124 / 237 / 37
Регистрация: 15.03.2010
Сообщений: 728
|
||
| 02.11.2012, 14:51 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 14:59 [ТС] | |
|
SlavaRus, не совсем
найти в одной таблице имя+неделя найти во второй имя+неделя если совпали - с первой копируем во вторую поверху найденных записей то есть этакое обновление
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 15:15 | |
|
Я тоже предполагаю, что в получателе будут только уникальные, а в источнике могут быть разные записи, из которых нужна только последняя по каждой фамилии-неделе.
Хотя конечно кто его знает... Но в получателе не вижу смысла в десяти вася-44 ![]() А в источнике могут быть например накопительный итог собирается, или просто нужно последнее значение. Каролинка, так проясните - как там в самом деле?
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 15:34 [ТС] | |
|
там есть 200 человек(васей), каждый из них за неделю заполняет, что он делал (Activiteit) по часам (сколько на каждую активность) - в итоге получается таблица, в которой для одного васи в одну неделю пару столбцов одинаковые, а остальные (к примеру, количество часов, активность итд) отличаются, то есть по идее 2х одинаковых строк не должно быть
Добавлено через 1 минуту хотя я думаю на уникальность их отфильтровать не помешало бы Добавлено через 1 минуту потом это все копируется в другой файл, в таблицу скопировалось затем какой-то из этих вась изменил какое-то количество часов, хочет обновить копированный диапазон Добавлено через 58 секунд а вот как обновить - я собственно и не знаю
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 15:37 [ТС] | |
|
насчет фильтра: по идее должно быть приблизительно столько строк, а выходит 600 я просто боюсь подумать, что будет если 200 челк по 600 строк отправят)
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 15:51 | |
|
Всё равно не понятно... В получателе сколько строк, где в одной строке "вася" и "конкретная_неделя"?
Сколько в источнике? Данные "вася" обновляет всегда все, или например обновит только в третьем столбце, а остальные отставит пустыми? (хотя раз ранее копировали строки целиком - значит обновляем сразу все данные - но мало ли...) И обновление - это всегда последняя строка вася-неделя, или вдруг может поменяться где-то выше, если таких строк много, но в каждой данные в разных столбцах? Может быть можете составить простой пример на 2 листа конкретно по этой задаче - без кучи неотносящегося к делу мусора/кодов? И обьясните - что из чего как должно получится. Тогда На выходных смогу заняться кодом - а пока некогда и неначём. Добавлено через 5 минут Так, судя по скрину - возможно нужно в словарь класть вася/неделя/активейт - номер_строки Тогда в этот номер и записывать изменившиеся часы. Добавлено через 1 минуту А сколько будет человек - по-барабану, хоть мильён.
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 18:03 [ТС] | |
|
я не знаю сколько строк, в том-то и еще одна проблема. вообще где-то 25-50, в зависимости от того, как заполнит пользователь
лучше пусть всегда все обновляются, чтобы потом не возникало лишних вопросов я попробую составить пример без всех лишних подсчетов, расчетов и тп ![]() будет пример, допишу тогда что откуда куда копировать\обновлять Добавлено через 2 минуты Hugo121, я попробую со словарями поэкспериментировать.. Добавлено через 2 часа 6 минут а можно ли как-то в качестве ключа и данных задавать название стобца (A к примеру)?
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 18:07 | |
|
Можно, но не понимаю - зачем? Как это использовать?
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
|
| 02.11.2012, 18:15 [ТС] | |
|
Hugo121, я просто думаю как задать ключ-данные
скорее всего (но я еще уточняю) в первом файле фамилия и неделя они все одинаковые я просто не знаю как обратиться к этой паре "вася|44" ((
0
|
|
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 18:17 | |
|
смысл словаря в чём - когда он заполнен данными, Вы всегда сразу по ключевым данным получаете номер строки, где эти данные лежат.
Не нужно их долго и мучительно искать по листу, особенно если нужно найти по трём ячейкам строки. В словаре записано - вася/44/упаковка - 5, вася/44/перевозка - 15. Теперь когда циклом по источнику дошли до строки, где вася|qwert|10|44|trewq|упаковка|256 сразу копируете эту строку в №5 (из словаря по склейке нужных ячеек извлекаете номер 5, куда и копируете). Если ключ не найдётся - значит строка новая, пишем в конец. И как применить тут название столбца как ключ - да никак...
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2012
Сообщений: 152
|
||||||
| 02.11.2012, 18:20 [ТС] | ||||||
|
так я просто не знаю как Ваш совет применить, если я имя и номер недели не смогу явно задать
как мне их извлечь? может подойдет
0
|
||||||
|
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
|
|
| 02.11.2012, 18:28 | |
|
Как не сможете задать имя/номер? Они ведь не бегают по строке - всегда в ведь одном столбце лежат!
Как обратиться - есть строка с ячейками - делаем условно t= [a1] & "|" & [c1] & "|" & [f1] получаем в t строку "вася|44|упаковка", кладём в словарь, в item словаря к этому значению номер анализированной строки. Затем при цикле по другому листу аналогично этот номер получаем из словаря. Это стандартный ход, во всех кодах на словаре есть такое (только вместо номера может быть объект, другой словарь например, как я вчера делал). Добавлено через 5 минут В общем, давайте небольшой пример данных - вечером напишу пример кода на словаре. А то может я вообще не правильно задачу понял, парю тут мозги девушке
0
|
|
|
1124 / 237 / 37
Регистрация: 15.03.2010
Сообщений: 728
|
||
| 02.11.2012, 19:22 | ||
|
0
|
||
| 02.11.2012, 19:22 | |
|
Помогаю со студенческими работами здесь
20
У меня есть таблица в ней 3 столбца и 2 колонки, есть border после 1,2-й строк Выяснить, есть ли в матрице ненулевые элементы и если есть, то указать индексы одного из ненулевых элементов Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|