На первом листе есть массив точек 50х50. В каждой ячейке массива внесена "глубина" элемента от 1 до 24. На второй лист вынесены только те элементы массива которые удовлетворяют заданной "глубине". На третьем листе необходимо пронумировать эти точки от 1 до n начиная с левого верхнего угла по часовой стрелке, то есть нужно получить тот же массив но вместо значений глубины в ячейки занести номер данного элемента. При этом формула должна работать на весь диапазон 50х50 Пробывал простой математикой решить данную задачу через накладывание координат но увы...
На первом листе есть массив точек 50х50. В каждой ячейке массива внесена "глубина" элемента от 1 до 24. На второй лист вынесены только те элементы массива которые удовлетворяют заданной "глубине". На третьем листе необходимо пронумировать эти точки от 1 до n начиная с левого верхнего угла по часовой стрелке, то есть нужно получить тот же массив но вместо значений глубины в ячейки занести номер данного элемента. При этом формула должна работать на весь диапазон 50х50 Пробывал простой математикой решить данную задачу через накладывание координат но увы...lfuthobr
ну если диапазон будет с B2 а не с A1, то можно так:
Код
=ЕСЛИ('Массив с заданной глубиной'!F6=$BD$3; ЕСЛИ((СЧЁТЕСЛИ('Массив с заданной глубиной'!$A$1:E6;$BD$3)+СЧЁТЕСЛИ('Массив с заданной глубиной'!F$1:F5;$BD$3))=0;1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!$A$1:F5;$BD$3)=0;E6+1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!G$1:$AZ6;$BD$3)=0;F5+1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!F7:$AY$51;$BD$3)=0;G6+1;F7+1))));"")
ну если диапазон будет с B2 а не с A1, то можно так:
Код
=ЕСЛИ('Массив с заданной глубиной'!F6=$BD$3; ЕСЛИ((СЧЁТЕСЛИ('Массив с заданной глубиной'!$A$1:E6;$BD$3)+СЧЁТЕСЛИ('Массив с заданной глубиной'!F$1:F5;$BD$3))=0;1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!$A$1:F5;$BD$3)=0;E6+1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!G$1:$AZ6;$BD$3)=0;F5+1; ЕСЛИ(СЧЁТЕСЛИ('Массив с заданной глубиной'!F7:$AY$51;$BD$3)=0;G6+1;F7+1))));"")
прохожий2019, Спасибо огромное! А есть более универсальное решение, если например эту будет не квадрат а ромб, то есть будет иметь место диагональное положение интересуемых ячеек. Прилагаю файл с примером.
прохожий2019, Спасибо огромное! А есть более универсальное решение, если например эту будет не квадрат а ромб, то есть будет иметь место диагональное положение интересуемых ячеек. Прилагаю файл с примером.lfuthobr
ну разве что через угол... (но это с еще одним доп. диапазоном или с модификацией имеющегося - см. второй файл) начало координат X
Код
=СРЗНАЧ(ЕСЛИ('Массив с заданной глубиной'!B2:AY51=BD3;СТОЛБЕЦ('Массив с заданной глубиной'!B2:AY51);""))
Y
Код
=СРЗНАЧ(ЕСЛИ('Массив с заданной глубиной'!B2:AY51=BD3;СТРОКА('Массив с заданной глубиной'!B2:AY51);""))
доп.диапазон:
Код
=ЕСЛИ(ЕЧИСЛО('Массив с заданной глубиной'!B2);ОСТАТ(ЕСЛИ((СТОЛБЕЦ('Массив с заданной глубиной'!B2)-$BE$6)>0;0,75;ЕСЛИ((СТРОКА('Массив с заданной глубиной'!B2)-$BE$7)<0;-0,25;1,75))*ПИ()+ATAN((СТРОКА('Массив с заданной глубиной'!B2)-$BE$7)/(СТОЛБЕЦ('Массив с заданной глубиной'!B2)-$BE$6));2*ПИ());"")
сам номер:
Код
=ЕСЛИ('Массив с заданной глубиной'!B2=$BD$3;РАНГ(BI2;$BI$2:$DF$51;1);"")
ну разве что через угол... (но это с еще одним доп. диапазоном или с модификацией имеющегося - см. второй файл) начало координат X
Код
=СРЗНАЧ(ЕСЛИ('Массив с заданной глубиной'!B2:AY51=BD3;СТОЛБЕЦ('Массив с заданной глубиной'!B2:AY51);""))
Y
Код
=СРЗНАЧ(ЕСЛИ('Массив с заданной глубиной'!B2:AY51=BD3;СТРОКА('Массив с заданной глубиной'!B2:AY51);""))
доп.диапазон:
Код
=ЕСЛИ(ЕЧИСЛО('Массив с заданной глубиной'!B2);ОСТАТ(ЕСЛИ((СТОЛБЕЦ('Массив с заданной глубиной'!B2)-$BE$6)>0;0,75;ЕСЛИ((СТРОКА('Массив с заданной глубиной'!B2)-$BE$7)<0;-0,25;1,75))*ПИ()+ATAN((СТРОКА('Массив с заданной глубиной'!B2)-$BE$7)/(СТОЛБЕЦ('Массив с заданной глубиной'!B2)-$BE$6));2*ПИ());"")
сам номер:
Код
=ЕСЛИ('Массив с заданной глубиной'!B2=$BD$3;РАНГ(BI2;$BI$2:$DF$51;1);"")
прохожий2019, Спасибо, все идеально. Не понял только зачем вычислять х и у через среднее а не прост очерез края значений в диапазоне /2. И часть формулы номера.
прохожий2019, Спасибо, все идеально. Не понял только зачем вычислять х и у через среднее а не прост очерез края значений в диапазоне /2. И часть формулы номера.lfuthobr
нет, находится полярный угол в радианах. Угол получаем через ATAN и делаем поправку на квадрант (курите полярные координаты). Проблема в том, что нумерация нужна из левого верхнего угла, а это система координат, повернутая на 45 градусов или 0,25*ПИ() в радианах. См. второй файл (1122220.xlsx) - там угол поворота можно задавать
нет, находится полярный угол в радианах. Угол получаем через ATAN и делаем поправку на квадрант (курите полярные координаты). Проблема в том, что нумерация нужна из левого верхнего угла, а это система координат, повернутая на 45 градусов или 0,25*ПИ() в радианах. См. второй файл (1122220.xlsx) - там угол поворота можно задаватьпрохожий2019
Сообщение отредактировал прохожий2019 - Четверг, 16.07.2020, 00:08