Здравствуйте!! Есть 2 таблицы 4 столбца (имя, от, до, и четвертый столбец надо перенести из одной таблицы в другую) и многооооооо строк в одной таблице интервал представлен в разбитым по единицам 0-1,1-2, 2-3.... и т.д. В другой таблице интервал объединен в общий от 0-3 и вот значение из общего интервала необходимо перенести в интервал разбитый. С учетом имени в первом столбце. Необходимо сопоставить общий интервал и подставить значение, учитывая лежит ли данное значение в разбитом интервале. Спасибо..
Сопоставление данных по интервалам.
10.05.2024 01:18:48
|
|
|
|
10.05.2024 08:37:36
|
|
|
|
10.05.2024 09:07:18
Coolllerr, сразу есть вопросы - Какое значение ставить если интервал будет от 10,50 до 10,50?
Какое если интервал от 10,40 до 11? И главное - почему? Ну а так вполне возможно что достаточно ВПР как в теме |
|
|
|
10.05.2024 11:26:52
|
|
|
|
10.05.2024 11:41:04
|
|||||
|
|
10.05.2024 13:57:28
Coolllerr, ну с именно такими интервалами есть формула.
Интересно посмотреть как должно быть с другими... |
|
|
|
10.05.2024 16:07:14
|
|||
|
|
10.05.2024 17:16:49
Вообще логика формулы не меняется, перестановка местами таблиц на её работу не влияет.
Но на 10 мб конечно тяжело будет, уже на этом файле надоело ждать... Дождался наконец.. И вот может теперь скажете какие коды и почему должны быть тут: B2041 71 83,199997 #Н/Д B2041 98 99 #Н/Д Есть выбор из таких интервалов: B2041 0 4 SED B2041 4 9 IAB B2041 9 78,7 IAN B2041 78,7 98,9 TUF B2041 98,9 175 IAN
Изменено: |
|
|
|
10.05.2024 17:32:36
Потому что, B2041 98,9 175 IAN интервал от 98.9 до 175 представлен данным кодом. |
|||
|
|
10.05.2024 17:35:22
Мы имеем скважину разбитую по интервалам опробования это таблица с левой стороны. С правой стороны таблица с кодовым описанием по литологическим разностям. и получается что интервалы опробования представлены породами из таблицы с правой стороны.
|
|
|
|
10.05.2024 17:44:50
Первый столбец номер скважины, второй и третий интервалы опробования, четвертый код чем представлен, и вот надо срастить данные по номеру скважины, интервалу опробования и интервалу из правой таблицы. чтобы интервалы опробования скважины такой-то брали кодировку с правой таблицы учитывая номер скважины и интервал.т.е. если скважина 1 разбитая по метру с левой стороны на 50 инт. опробования брала для каждого метрового интервала данные из правой таблицs в которой написано что от 0-25 это код ABC а от 25-50 это код ABCD
|
|
|
|
10.05.2024 17:47:17
|
|
|
|
10.05.2024 18:02:05
|
|||||
|
|
10.05.2024 18:51:42
Если номер скважины совпадает и интервал ОТ в левом столбце больше или равен интервалу в правом столбцу и меньше или равен интервалу до в правом столбцу тогда код в левом столбцу равен коду в правом столбцу если нет тогда сравниваем дальше. Вот у меня родилась типа какая то такая логика
|
|
|
|
10.05.2024 18:55:22
B2041 98 99 TUF - концепция поменялась?
А логику не понял, попробуйте переформулировать - как это интервал ОТ в левом столбце больше или равен интервалу в правом столбцу и меньше или равен интервалу до в правом столбцу тогда код в левом столбцу равен коду в правом столбцу и где эти ОТ/ДО и столбцы ))
Изменено: |
|
|
|
10.05.2024 19:03:41
|
|||
|
|
10.05.2024 19:12:48
Ну тогда формула выводящая по последнему готова, см. выше.
Но тяжело будет на больших объёмах, вводить на старых версиях тремя клавишами Ctrl+Shift+Enter |
|
|
|
10.05.2024 19:16:44
Изменено: |
|||
|
|
10.05.2024 19:53:01
|
|||
|
|
10.05.2024 19:56:23
Coolllerr, ну так за полчаса ещё не написали? Логика формулы ведь есть...
это третий вариант, выводит тут TUF: B2041 98 99 #Н/Д IAN TUF |
|||
|
|
10.05.2024 20:20:52
|
|||
|
|
10.05.2024 22:04:15
|
|||
|
|
10.05.2024 22:21:32
сделайте "ВПР" с декартовым произведением в power query с последующей проверкой каждой границы интервала (как - указано по ссылке из такой же темы) - тогда невозможно будет ошибиться
|
|
|
|
10.05.2024 22:28:09
Я в самом начале спрашивал что делать с интервалами которые идут через
Их наверное может быть и более двух... Может быть перечислять все? В принципе для двух крайних уже решение есть, можно собрать в одной ячейке, правда будет неоптимально... Да и объёмы вычислений большие... Нужно или в PQ делать, или макросом, но сперва нужно решить какой ожидаете результат и почему у таких интервалов. |
|
|
|
10.05.2024 22:52:13
Hugo, до 10 млн строк (навскидку, по опыту) не будет больших объемов вычислений (для PQ имеется в виду), т.е. одна таблица скажем на 2 тыс. строк Х другая на 5 тыс. строк...с такими входными данными ничего не будет тормозить, каждую строку с каждой соединить и сравнить границы, не подошедшие ни под один интервал строки - убрать фильтром. Наверно, более опытные без join в PQ составят скрипт, циклом сравнения каким-то, или с летучим join'ом, я не знаю как, но не думаю что будет быстрее работать.
Но мне оч. интересно было бы, чтобы кто-то написал цикл перебора со сравнением границ интервалов в PQ без join, для опыта.
Изменено: |
|
|
|
10.05.2024 22:58:24
Так я и сказал что в PQ нужно делать, у меня формулы на целый столбец еле ворочались, поэтому хоть и ленивый, но диапазоны как выше видно обрезал впритирку ))
|
|
|
|
10.05.2024 23:11:20
|
|||
|
|
10.05.2024 23:14:15
А если интервал до >= следующему интервалу от тогда вставляется значение следующего кода
|
|
|
|
10.05.2024 23:35:45
Coolllerr, т.е. имеется в виду, например, есть интервал от 80 до 100 и еще есть от 90 до 120? если да, то как определяется "старшинство" интервала? по границе От? а если есть еще интервал от 90 до 130? что-то слишком, надо тогда циклы в циклах, чтобы каждую нижнюю границу проверяло по списку всех нижних границ, а при соблюдении условия проверяло верхнюю границу по списку верхних границ, и при соблюдении условия составляло новый список верхних границ и по нему проходило - а нет ли более лучшего совпадения по верхней границе? и потом еще на цикл по верхней?.....а которая нижняя граница "лучше" - от 80 до 100 или от 90 до 120? т.е. 80 или 90 лучше?
Короче говоря, если интервалу из левой таблицы может соответствовать несколько интервалов из правой таблицы, то нужно правило, как оценивать по каждой границе интервала самое лучшее совпадение. Напр., в правой табл. есть интервал от 80 до 100, берем из левой все интервалы с нижней границей <=80, составляем список всех верхних границ таких интервалов, оставляем из списка те которые <=100 выбираем из оставшихся минимальное /максимальное ... такое должно быть правило, если я понял правильно все
Изменено: |
||||
|
|
|||