#excel #excel-formula
Вопрос:
У меня есть данные, состоящие из информации о здании. этаж_арея_нум.
A | B |
---|---|
Этаж | Floor_Area_Num |
001 | 1-1 |
001 | 1-2 |
001 | 1-3 |
001 | 1-4 |
001 | 1-5 |
001 | 1-6 |
001 | 1-7 |
001 | 1-8 |
002 | 2 |
002 | 2-2 |
002 | 2-3 |
Мне бы хотелось еще один столбец, который может увеличиваться на 1 с 0 в каждой 5-й строке (где столбец «Этаж» одинаков), но он должен уменьшаться до 0, когда это новый этаж. вот так:
A | B | C |
---|---|---|
Этаж | Floor_Area_Num | номер |
001 | 1-1 | 0 |
001 | 1-2 | 0 |
001 | 1-3 | 0 |
001 | 1-4 | 0 |
001 | 1-5 | 0 |
001 | 1-6 | 1 |
001 | 1-7 | 1 |
001 | 1-8 | 1 |
002 | 2 | 0 |
002 | 2-2 | 0 |
002 | 2-3 | 0 |
Итак, пока я использую это: =INT((ROW(C2)-2)/5) 1
что позволяет мне увеличивать 1 на каждую 5-ю строку. Но я не уверен, как изменить его обратно на 0, когда изменится значение пола. Есть какие-нибудь советы?
Отредактировано: не во всех номерах Floor_Area_Num есть цифры через дефис. Некоторые этажи также содержат буквы в начале, например:
A | B | C |
---|---|---|
Floor | Floor_Area_Num | num |
A01 | A101 | |
A01 | A102 | |
A01 | A103 | |
A01 | A104 | |
A01 | A105 | |
А01 | А106 | |
А02 | А201 | |
А02 | А202 | |
А02 | А203 | |
А02 | А204 | |
А02 | А205 | |
А02 | А206 | |
МБ1 | MB101-A | |
МБ1 | MB101-B | |
МБ1 | MB101-C | |
МБ1 | MB101-D | |
МБ1 | MB101-E |
теперь, отражая вышесказанное, столбец Num выше должен быть таким:
-------- ----------------- ------
| A | B | C |
-------- ----------------- ------
| Floor | Floor_Area_Num | num |
| A01 | A101 | 0 |
| A01 | A102 | 0 |
| A01 | A103 | 0 |
| A01 | A104 | 0 |
| A01 | A105 | 0 |
| A01 | A106 | 1 |
| A02 | A201 | 0 |
| A02 | A202 | 0 |
| A02 | A203 | 0 |
| A02 | A204 | 0 |
| A02 | A205 | 0 |
| A02 | A206 | 1 |
| MB1 | MB101-A | 0 |
| MB1 | MB101-B | 0 |
| MB1 | MB101-C | 0 |
| MB1 | MB101-D | 0 |
| MB1 | MB101-E | 0 |
-------- ----------------- ------
Всякий раз, когда это новый этаж, число должно быть равно 0, как вы можете видеть выше, и увеличиваться только на 1 после 5-го шага того же этажа.
Ответ №1:
Комментарии:
1. Кажется, это работает! Как я мог отредактировать это, чтобы подогнать полы с буквами? например, если бы у меня был B01, а также этажи с SB1?
2. Можете ли вы расширить свой вопрос дополнительными подробностями @doh2122. Включите желаемое поведение и результаты, чтобы я мог понять, что вы имеете в виду. Ответ даже не смотрит на 2-ю колонку для номеров этажей.
3. отредактирую вопрос!
4. отредактировано! функция, которую вы предоставили, работает в данный момент, но поскольку некоторые значения этажей также содержат буквы, я хотел бы попробовать отредактировать эту функцию.
5. @doh2122, это отлично работает для меня, так как вся функция, которую я предоставил, заключается в том, чтобы посмотреть, отличается ли значение в столбце A от его предыдущего значения. Не имеет значения, являются ли они цифровыми или им предшествуют буквы.
Ответ №2:
Вы можете попробовать что-то вроде
=IF(IFERROR(LEFT(B2,SEARCH("-", B2)-1), "!")<>
IFERROR(LEFT(B1,SEARCH("-", B1)-1), "!"), 0,
IF(MOD(NUMBERVALUE(RIGHT(B1, LEN(B1)-SEARCH("-", B1))),5)=0, C1 1, C1))
Во-первых, мы проверяем, меняется ли пол. Если это произойдет, мы перезапустимся в 0.
Затем мы получаем номер области, используя обычные строковые функции, такие как RIGHT
, LEN
, и SEARCH
. Если предыдущая область была кратна 5, то мы добавляем 1 к счетчику, если нет, мы повторяем счетчик.
Комментарии:
1. Спасибо за совет! Кажется, это почти работает. Как насчет мест, где у меня нет дефиса в номере этажа? ` 1 1-1 1-2 » на данный момент я получаю ошибку #ЗНАЧЕНИЕ! места, где у меня нет дефиса на номере этажа.
2. Если случаи без дефисов не являются последовательными, вы можете попробовать обернуть первый тест в
IFERROR
, см. Правка