Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Соединение периодов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Соединение периодов (Формулы/Formulas)
Соединение периодов
tot11 Дата: Суббота, 15.06.2019, 12:24 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток, господа.
Вопрос такой.
Есть столбец, который используется в дальнейшем как указатель на то, какой идёт период в данной строке. Период 1 и период -1, 0 считается как продолжение начатого на строке выше периода.
К примеру здесь периоды: от начала до 1, от 1 до 1, от 1 до -1, от -1 до 1, от 1 до конца.
столбец А
0
0
1
1
0
-1
1
0

Задача: привести столбец Б (через формулы в столбце Б) к виду
столбец Б
0
0
0
1
0
-1
1
0
Как вы видите одинаковые периоды тут соединяются. От начала до 1, от 1 до -1, от -1 до 1, от 1 до конца.
 
Ответить
СообщениеДоброго времени суток, господа.
Вопрос такой.
Есть столбец, который используется в дальнейшем как указатель на то, какой идёт период в данной строке. Период 1 и период -1, 0 считается как продолжение начатого на строке выше периода.
К примеру здесь периоды: от начала до 1, от 1 до 1, от 1 до -1, от -1 до 1, от 1 до конца.
столбец А
0
0
1
1
0
-1
1
0

Задача: привести столбец Б (через формулы в столбце Б) к виду
столбец Б
0
0
0
1
0
-1
1
0
Как вы видите одинаковые периоды тут соединяются. От начала до 1, от 1 до -1, от -1 до 1, от 1 до конца.

Автор - tot11
Дата добавления - 15.06.2019 в 12:24
Светлый Дата: Суббота, 15.06.2019, 12:48 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Добрый день!
С файлом было бы лучше.
Код
=ЕСЛИ(F1;ЕСЛИ(F1*F2>0;;F1);)
*Даже достаточно:
Код
=ЕСЛИ(F1*F2>0;;F1)


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Суббота, 15.06.2019, 12:52
 
Ответить
СообщениеДобрый день!
С файлом было бы лучше.
Код
=ЕСЛИ(F1;ЕСЛИ(F1*F2>0;;F1);)
*Даже достаточно:
Код
=ЕСЛИ(F1*F2>0;;F1)

Автор - Светлый
Дата добавления - 15.06.2019 в 12:48
tot11 Дата: Суббота, 15.06.2019, 13:07 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Пардон, прикрепляю файл.
Ваша формулы работают, только если схожие цифры в соседних строках стоят, а если между ними какое-то кол-во строк с 0, то результат неправильный.
К сообщению приложен файл: 3503947.xlsx (9.6 Kb)


Сообщение отредактировал tot11 - Суббота, 15.06.2019, 13:21
 
Ответить
СообщениеПардон, прикрепляю файл.
Ваша формулы работают, только если схожие цифры в соседних строках стоят, а если между ними какое-то кол-во строк с 0, то результат неправильный.

Автор - tot11
Дата добавления - 15.06.2019 в 13:07
Nic70y Дата: Суббота, 15.06.2019, 13:32 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2)
К сообщению приложен файл: 7866454.xlsx (11.4 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2)

Автор - Nic70y
Дата добавления - 15.06.2019 в 13:32
tot11 Дата: Суббота, 15.06.2019, 14:06 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2)

Спасибо, это работает.
 
Ответить
Сообщение
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2)

Спасибо, это работает.

Автор - tot11
Дата добавления - 15.06.2019 в 14:06
tot11 Дата: Суббота, 15.06.2019, 15:44 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А нет! Я поторопился благодарить.
Если к примеру в конце столбца идёт несколько подряд 1 и заканчивается ей, - результат неправильный.
К сообщению приложен файл: 7730924.xlsx (11.2 Kb)
 
Ответить
СообщениеА нет! Я поторопился благодарить.
Если к примеру в конце столбца идёт несколько подряд 1 и заканчивается ей, - результат неправильный.

Автор - tot11
Дата добавления - 15.06.2019 в 15:44
Nic70y Дата: Суббота, 15.06.2019, 18:10 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
возможно так
Код
=ЕСЛИ(A2=A3;;ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2))
не проверял


ЮMoney 41001841029809
 
Ответить
Сообщениевозможно так
Код
=ЕСЛИ(A2=A3;;ЕСЛИОШИБКА(ЕСЛИ(ПОИСКПОЗ(A2;A3:A$18000;)>ПОИСКПОЗ(-A2;A3:A$18000;);A2;);A2))
не проверял

Автор - Nic70y
Дата добавления - 15.06.2019 в 18:10
Светлый Дата: Суббота, 15.06.2019, 18:13 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Код
=A2*ЕСЛИОШИБКА(ИНДЕКС(A:A;МИН(ЕСЛИ(A3:A999;СТРОКА(A3:A999))))*A2<0;1)
*Массивные
Код
=A2*ЕСЛИОШИБКА(ИНДЕКС(A3:A999;ПОИСКПОЗ(1;ABS(A3:A999);))*A2<0;1)
**
Код
=A2*ЕСЛИОШИБКА(СМЕЩ(A2;ПОИСКПОЗ(1;ABS(A3:A999););)*A2<0;1)
***
Код
=A2*ЕСЛИОШИБКА(СМЕЩ(A2;ПОИСКПОЗ(1;ABS(A3:A999););)=-A2;1)


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Суббота, 15.06.2019, 18:49
 
Ответить
Сообщение
Код
=A2*ЕСЛИОШИБКА(ИНДЕКС(A:A;МИН(ЕСЛИ(A3:A999;СТРОКА(A3:A999))))*A2<0;1)
*Массивные
Код
=A2*ЕСЛИОШИБКА(ИНДЕКС(A3:A999;ПОИСКПОЗ(1;ABS(A3:A999);))*A2<0;1)
**
Код
=A2*ЕСЛИОШИБКА(СМЕЩ(A2;ПОИСКПОЗ(1;ABS(A3:A999););)*A2<0;1)
***
Код
=A2*ЕСЛИОШИБКА(СМЕЩ(A2;ПОИСКПОЗ(1;ABS(A3:A999););)=-A2;1)

Автор - Светлый
Дата добавления - 15.06.2019 в 18:13
Светлый Дата: Воскресенье, 16.06.2019, 12:49 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
А правильней была бы формула, которая ставит 1 или -1 в первой ячейке периода и 0 до начала противоположного периода. Формула массива:
Код
=(СМЕЩ(A$1;МАКС(2;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2
Единственно, что не определено, это начало списка. До первого ненулевого значения период не назначен. Его можно задать как первый встретившийся или наоборот противоположный первому встретившемуся. А можно в самой первой ячейке задать конкретное значение. Варианты:
Код
=ЕСЛИ(A$1=A1;СМЕЩ(A1;ПОИСКПОЗ(1;ABS(A2:A99);););(СМЕЩ(A$1;МАКС(1;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2)
Код
=(A$1=A1)*СМЕЩ(A1;ПОИСКПОЗ(1;ABS(A2:A99););)+(СМЕЩ(A$1;МАКС(1;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2


Программировать проще, чем писать стихи.
 
Ответить
СообщениеА правильней была бы формула, которая ставит 1 или -1 в первой ячейке периода и 0 до начала противоположного периода. Формула массива:
Код
=(СМЕЩ(A$1;МАКС(2;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2
Единственно, что не определено, это начало списка. До первого ненулевого значения период не назначен. Его можно задать как первый встретившийся или наоборот противоположный первому встретившемуся. А можно в самой первой ячейке задать конкретное значение. Варианты:
Код
=ЕСЛИ(A$1=A1;СМЕЩ(A1;ПОИСКПОЗ(1;ABS(A2:A99);););(СМЕЩ(A$1;МАКС(1;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2)
Код
=(A$1=A1)*СМЕЩ(A1;ПОИСКПОЗ(1;ABS(A2:A99););)+(СМЕЩ(A$1;МАКС(1;ABS(Ч(+A$1:A1))*СТРОКА($1:1))-1;)=-A2)*A2

Автор - Светлый
Дата добавления - 16.06.2019 в 12:49
tot11 Дата: Воскресенье, 23.06.2019, 22:59 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Господа!
Извиняюсь за долгий ответ (жизненные обстоятельства).
Что-то не то в вашей формуле, результат через раз.
В кратце если объяснить полностью проблему (задачу), то дан мне не один список, а

-их 127 (на текущий момент, т.е. потом должны добавляться, в приложенном файле их 42)
-размер каждого такого списка примерно 80-110 ячеек
-всё это идёт одним сплошным столбцом
-начало и конец каждого списка известен (пока помечается только графической чертой, но могу параллельно столбец с нумерацией сделать)
-период определяется цифрой, до которой он добирается, т.е. если впереди 1, то это "период +", если впереди -1, то это "период -"
-каждый список начинается с нуля, т.е. каким-то, в соответствии с тем, что впереди стоит, периодом
-каждый список может заканчивается на что угодно
-если список заканчивается на цифре 0, то последний период этого списка тот, где была последняя цифра соотв. 1 или -1, а идущие до конца списка нули периодом не являются

Суть задачи такая же: соединить в каждом списке одинаковые периоды, чтобы были исключены повторы "цифр-перегородок" между одинаковыми периодами

Я пробовал вставлять в каждый список по отдельности формулы, растягивая их до конца текущего списка, но что-то сбивается, и главное, последняя ячейка списка видоизменяется сама в своей формуле.

Был бы признателен за формулу, которую можно вставить и растянуть хотя бы на 1 список, но так чтобы потом в другие тоже также можно было вставить и растянуть, и они не переглючивали бы между собой.
Прилагаю файл.
К сообщению приложен файл: _-42_-.xlsx (31.3 Kb)
 
Ответить
СообщениеГоспода!
Извиняюсь за долгий ответ (жизненные обстоятельства).
Что-то не то в вашей формуле, результат через раз.
В кратце если объяснить полностью проблему (задачу), то дан мне не один список, а

-их 127 (на текущий момент, т.е. потом должны добавляться, в приложенном файле их 42)
-размер каждого такого списка примерно 80-110 ячеек
-всё это идёт одним сплошным столбцом
-начало и конец каждого списка известен (пока помечается только графической чертой, но могу параллельно столбец с нумерацией сделать)
-период определяется цифрой, до которой он добирается, т.е. если впереди 1, то это "период +", если впереди -1, то это "период -"
-каждый список начинается с нуля, т.е. каким-то, в соответствии с тем, что впереди стоит, периодом
-каждый список может заканчивается на что угодно
-если список заканчивается на цифре 0, то последний период этого списка тот, где была последняя цифра соотв. 1 или -1, а идущие до конца списка нули периодом не являются

Суть задачи такая же: соединить в каждом списке одинаковые периоды, чтобы были исключены повторы "цифр-перегородок" между одинаковыми периодами

Я пробовал вставлять в каждый список по отдельности формулы, растягивая их до конца текущего списка, но что-то сбивается, и главное, последняя ячейка списка видоизменяется сама в своей формуле.

Был бы признателен за формулу, которую можно вставить и растянуть хотя бы на 1 список, но так чтобы потом в другие тоже также можно было вставить и растянуть, и они не переглючивали бы между собой.
Прилагаю файл.

Автор - tot11
Дата добавления - 23.06.2019 в 22:59
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Соединение периодов (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!