- Регистрация
- 23.12.2014
- Сообщения
- 14 417
- Благодарностей
- 5 454
- Баллы
- 113
28 таблиц.несколько это сколько? И как должен выглядеть результат?
не знаю как стандартными, но через код, почему нет.Так как должен выглядеть результат?28 таблиц.
И еще 2 момент всплыл. Можно ли при наличии дублей удалять полностью строки (не оставляя оригинал).
Есть 28 таблиц, между ними есть дубли. Мне надо их удалить что бы остались все теже 28 таблиц. И не просто дубли. А как правильно сказать то. Ну вот если нашел он 2 одинаковые строки в разных таблицах, то удалил их обе.не знаю как стандартными, но через код, почему нет.Так как должен выглядеть результат?
ну ты попал)Есть 28 таблиц, между ними есть дубли. Мне надо их удалить что бы остались все теже 28 таблиц. И не просто дубли. А как правильно сказать то. Ну вот если нашел он 2 одинаковые строки в разных таблицах, то удалил их обе.
Ну хотя бы просто дубли удалить можно?ну ты попал)
Какой ужасТебе надо на вход дать 28 путей к таблицам. Создать массив, который будет содержать 28 элементов, каждый из которых будет списком, отвечающим за таблицу, а элементами списка будут массивы ячеек строк. Перебрать эти 28 строк в цикле, поочерёдно привязываю таблицы к зенновской таблице проекта, и перенести данные в этот основной массив.
Это всё на случай, если из зенно из кода нельзя создавать таблицы (вроде как нельзя). Если можно, то нам нужен массив таблиц,это было бы проще.
Потом тебе нужно замутить тройной цикл. 1й цикл будет гнать от 0 до 28-1, отвечает за текущую таблицу. 2й цикл будет гнать от индекса 1го цикла +1, до 28, он будет отвечать за таблицу, с которой будет происходить сравнение. 3й цикл будет гнать по строкам таблицы 1го цикла, 4й по строкам таблицы 2го цикла.
В общем звучит непонятно, на деле будет ещё хуже, удачи)
по идее. норм вариантКакой ужас
Смотри а если например взять все таблицы, и в конце каждой добавить строку метку. потом их все собрать в одну, удалить дубли и по этой метке разложить обратно. по моему так будет проще чем в зенке этот треш мутить))
вот вот, я только хотел это написать.Какой ужас
Смотри а если например взять все таблицы, и в конце каждой добавить строку метку. потом их все собрать в одну, удалить дубли и по этой метке разложить обратно. по моему так будет проще чем в зенке этот треш мутить))
Тогда такой алгоритм C#:единственной, 1й дубль так не удалится
Ну возможно в екселе можно так удалить. Надо уточнить этот момент.единственной, 1й дубль так не удалится
Ага только в шарпе я не очень)) Кубы решают )))Тогда такой алгоритм C#:
1. Клеим в 1 таблицу все ( с метками в отдельном столбце).
2. По очереди берем каждую ячейку нужного стобца, в котором надо находить дубли.
3. Ищем в цикле по всей таблице (начиная от номера этой активной строки и до конца таблицы) сколько раз встречается эта ячейка.
4. Если встречается > 1 раза, то удаляем все строки с ней.
5. Двигаемся дальше до конца.
6. Собираем все обратно в отдельные таблицы.
Поиск и предложение услуг по созданию шаблоновНу возможно в екселе можно так удалить. Надо уточнить этот момент.
Ага только в шарпе я не очень)) Кубы решают )))
Да.В таблицах одинаковое количество столбцов?
Ну посмотрим =)Поиск и предложение услуг по созданию шаблонов
Хотя думаю до вечера кто-то на коленке склепает и поделится решением.
Вот уже ситуация проясняется)Склеиваешь все файлы в 1.
В екселе в условном форматировании подсвечиваешь уникальные строки в столбце.
Раскидываешь обратно по файлам.
Потом ищешь как удалить помеченные строки.
Строковые дубли меня не интересуют. Мне надо удалять дубли в колонках.Так работает с List, удаляет и дубликат и оригинал.Код:var list2 = list1.GroupBy(x => x) .Where(group => group.Count() == 1) .Select(group => group.Key).ToList();
Дубли могут быть во всех таблицах. Я хз как еще сформулировать. Вася есть во всех таблицах, может и не быть. Если Вася это дубль, то мы удаляем его со всех таблиц. Если дубли Васи не найдены, то оставляем его в той таблице в которой он был изначально. Все строки остаются на своих местах.Стартовые данные чьи дубли ищем в 1 таблице или же в каждой?
Например в таблице 1 есть вася в 3 строке,в таблице 5 он тоже есть значит удаляем из этих таблиц.Или же старт может быть в любой таблице?
Сформулируй последовательность действий словами.
Или должно сначала с первой таблици все строки взять по очереди и проверить в других таблицах,потом со второй взять все и т.д.?
Всегда в 1 столбце ищем?Если нашли то удаляем всю строку?Строковые дубли меня не интересуют. Мне надо удалять дубли в колонках.
Дубли могут быть во всех таблицах. Я хз как еще сформулировать. Вася есть во всех таблицах, может и не быть. Если Вася это дубль, то мы удаляем его со всех таблиц. Если дубли Васи не найдены, то оставляем его в той таблице в которой он был изначально. Все строки остаются на своих местах.
Ну да в одном. Столбец телефоны, всегда в нем телефоны.Всегда в 1 столбце ищем?Если нашли то удаляем всю строку?
Да вот задачка интересная,вот думаю как вариант 2 таблицы создать,их привязвыать по очереди к файлу,после искать.Не пойму зачем куча таблиц если данные похожи?Ну да в одном. Столбец телефоны, всегда в нем телефоны.
Строку всю обязательно иначе таблица сместится.
Но хотелось бы иметь возможность по другому столбцу пройтись тоже.
@Vlad_Curnoi Просто так спросил или хочешь меня обрадовать?))
Данные разные, но я где-то косячнул и данные записались не туда куда нужно. И теперь надо их удалить. Вроде даже строки одинаковые, может тогда строками можно почистить дубли если так не получается. Создавать таблицы новые я не хочу я уже и так руками провозился много с ними, что бы привести в приемлемый вид, осталось только с дублями разобраться и все.Да вот задачка интересная,вот думаю как вариант 2 таблицы создать,их привязвыать по очереди к файлу,после искать.Не пойму зачем куча таблиц если данные похожи?
Так запихните колонку в список, создайте класс для листа с индексом таблицы и поудаляйте дубли, залейте назад по таблицам. Порядок строк должен сохраниться?Строковые дубли меня не интересуют. Мне надо удалять дубли в колонках.
пример в студию )http://zennolab.com/discussion/threads/udalit-dubli-v-neskolkix-tablicax-po-odnomu-stolbcu.48561/
Так запихните колонку в список, создайте класс для листа с индексом таблицы и поудаляйте дубли, залейте назад по таблицам. Порядок строк должен сохраниться?
пример в студию )
class OurTables
{
public string Column { get; set; }
public string Index { get; set; }
}
List<OurTable> list1= new List<OurTable>();
var list2 = list1.GroupBy(x => x.Column)
.Where(group => group.Count() == 1)
.Select(group => new { Column = group.Key, Index = group.Select(x=>x.Index).ToList()[0] }).ToList();