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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическая многоуровневая нумерация по порядку - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Автоматическая многоуровневая нумерация по порядку
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 12:33 | Сообщение № 1
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Доброго времени суток, Уважаемые!
Прощу помощи создании формулы или подсказки функции для многоуровневой нумерации строк по порядку. В файле отчёте имеются блоки с видами работ по объектам, необходимо при изменении вручную в столбце В одинарного номера "Подрядной организации" или хотя бы двойного номера "Наименования объекта", далее по видам работ тройная нумерация пересчитывалась автоматически.
Заранее благодарен всем откликнувшимся.
К сообщению приложен файл: 8163739.xlsx (23.8 Kb)


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеДоброго времени суток, Уважаемые!
Прощу помощи создании формулы или подсказки функции для многоуровневой нумерации строк по порядку. В файле отчёте имеются блоки с видами работ по объектам, необходимо при изменении вручную в столбце В одинарного номера "Подрядной организации" или хотя бы двойного номера "Наименования объекта", далее по видам работ тройная нумерация пересчитывалась автоматически.
Заранее благодарен всем откликнувшимся.

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 12:33
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 13:22 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Для ячейки В6 применяю
Код
=B$5&"."&СТРОКА(A1)

и протягиваю вниз для блока 1.1
Работает если добавлять строку в конце блока (последнюю к примеру 1.1.13), но не пересчитывает нижестоящие после вставки в середине блока.


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеДля ячейки В6 применяю
Код
=B$5&"."&СТРОКА(A1)

и протягиваю вниз для блока 1.1
Работает если добавлять строку в конце блока (последнюю к примеру 1.1.13), но не пересчитывает нижестоящие после вставки в середине блока.

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 13:22
Russel Дата: Пятница, 07.11.2014, 13:26 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
Привет, Виктор! Не уверен, что тебя устроит вариант с допстолбцами, но ты глянь ))
К сообщению приложен файл: 3715978.xlsx (26.3 Kb)


QIWI 9173973973
 
Ответить
СообщениеПривет, Виктор! Не уверен, что тебя устроит вариант с допстолбцами, но ты глянь ))

Автор - Russel
Дата добавления - 07.11.2014 в 13:26
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 13:49 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Привет, Руслан! Конечно с доп. столбцами это не совсем то, что хотелось бы, но тем не менее вариант очень интересный.
Проверил, работает нормально если только вставлять строки внизу блоков или при вставке всего блока видов работ по одному из объектов снизу всех блоков. Но не пересчитывает если вставлять строку или несколько строк в середине блока или блок с видами работ в середине отчёта (между уже имеющимися блоками) то пересчёт не проводится.
Так что скорее всего этот вариант не подойдёт. Подождём, может какие идейки появятся если всё же задача окажется выполнимой в принципе.


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеПривет, Руслан! Конечно с доп. столбцами это не совсем то, что хотелось бы, но тем не менее вариант очень интересный.
Проверил, работает нормально если только вставлять строки внизу блоков или при вставке всего блока видов работ по одному из объектов снизу всех блоков. Но не пересчитывает если вставлять строку или несколько строк в середине блока или блок с видами работ в середине отчёта (между уже имеющимися блоками) то пересчёт не проводится.
Так что скорее всего этот вариант не подойдёт. Подождём, может какие идейки появятся если всё же задача окажется выполнимой в принципе.

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 13:49
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 13:56 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Russel, при вставке новых строк или блоков в середину, необходимо заново протягивать вниз до конца формулы диапазона А4:С4. :)
[offtop]Может я хочу невозможного!? :) [/offtop]


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеRussel, при вставке новых строк или блоков в середину, необходимо заново протягивать вниз до конца формулы диапазона А4:С4. :)
[offtop]Может я хочу невозможного!? :) [/offtop]

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 13:56
Russel Дата: Пятница, 07.11.2014, 14:15 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1394
Репутация: 320 ±
Замечаний: 0% ±

Excel 2010
необходимо заново протягивать вниз до конца формулы диапазона А4:С4

Да.
Может я хочу невозможного!?

ИМХО, геморройно все это и нужно лишь как украшательство, как в том анекдоте - "на скорость не влияет". Так что можно перед печатью или предоставлением руководству/заказчику добавлять эти столбцы.
[offtop]Если посидеть, покумекать подольше - можно и вариант без допстолбцов родить, но это время.[/offtop]


QIWI 9173973973
 
Ответить
Сообщение
необходимо заново протягивать вниз до конца формулы диапазона А4:С4

Да.
Может я хочу невозможного!?

ИМХО, геморройно все это и нужно лишь как украшательство, как в том анекдоте - "на скорость не влияет". Так что можно перед печатью или предоставлением руководству/заказчику добавлять эти столбцы.
[offtop]Если посидеть, покумекать подольше - можно и вариант без допстолбцов родить, но это время.[/offtop]

Автор - Russel
Дата добавления - 07.11.2014 в 14:15
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 14:23 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
нужно лишь как украшательство


можно перед печатью или предоставлением руководству/заказчику добавлять эти столбцы


В моём случае этот отчёт Руководство смотрит ежедневно и практически через день добавляются новые строки и в запарке могу забыть поправить нумерацию. А она мне необходима, т.к. при рассылке почтой я указываю порядковые номера добавленных строк.

Если не найдется универсального решения, то с удовольствием применю твоё, т.к. единственная протяжка при завершении работы с отчётом, это проще, нежели правка несколько раз в разных диапазонах нумерации. Еще раз благодарю! yes


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
Сообщение
нужно лишь как украшательство


можно перед печатью или предоставлением руководству/заказчику добавлять эти столбцы


В моём случае этот отчёт Руководство смотрит ежедневно и практически через день добавляются новые строки и в запарке могу забыть поправить нумерацию. А она мне необходима, т.к. при рассылке почтой я указываю порядковые номера добавленных строк.

Если не найдется универсального решения, то с удовольствием применю твоё, т.к. единственная протяжка при завершении работы с отчётом, это проще, нежели правка несколько раз в разных диапазонах нумерации. Еще раз благодарю! yes

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 14:23
Rioran Дата: Пятница, 07.11.2014, 14:47 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
VEKTORVSFREEMAN, здравствуйте.

А как Вам идея воспользоваться рукописной функцией? Она же UDF, она же как бы макрос.

В первую ячейку для нумерации вводим функцию с "прибитой гвоздями" ячейкой, с которой начинаем.

Код
=Rio_Mark(B$4)

Далее протягиваем. Функция ориентируется на содержимое ячеек в столбце справа и на содержимое ячейки сверху. В принципе, по моему алгоритму можно реализовать и формулами... но скорее всего это будет длинно и слабо оптимально. Сам код:

[vba]
Код
Function Rio_Mark(rngX As Range) As String

'Author:    Roman "Rioran" Voronov
'Date:      the 7-th of November, 2014
'Feedback:  voronov_rv@mail.ru

Dim A As Long       'Current row
Dim B As Long       'Current column
Dim C1 As Byte      'Position of the first "."
Dim C2 As Byte      'Position of the second "."

Dim StrX As String

A = Application.Caller.Row
B = Application.Caller.Column
StrX = Cells(A - 1, B).Value
C1 = InStr(1, StrX, ".")
C2 = InStr(C1 + 1, StrX, ".")

If rngX.Row = A Then
     Rio_Mark = "1"
ElseIf Cells(A, B + 1).Value = "" And Cells(A + 1, B + 1).Value = "" Then
     Rio_Mark = CStr(Int(Left(StrX, C1 - 1)) + 1)
ElseIf Cells(A, B + 1).Value = "" And Cells(A - 1, B + 1).Value = "" Then
     Rio_Mark = StrX & ".1"
ElseIf Cells(A, B + 1).Value = "" Then
     Rio_Mark = Left(StrX, C1) & CStr(Int(Mid(StrX, C1 + 1, C2 - C1 - 1)) + 1)
ElseIf Cells(A - 1, B + 1).Value = "" Then
     Rio_Mark = StrX & ".1"
Else
     Rio_Mark = Left(StrX, C2) & CStr(Int(Right(StrX, Len(StrX) - C2)) + 1)
End If

End Function
[/vba]
К сообщению приложен файл: Rio_Numeration.xlsm (31.5 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеVEKTORVSFREEMAN, здравствуйте.

А как Вам идея воспользоваться рукописной функцией? Она же UDF, она же как бы макрос.

В первую ячейку для нумерации вводим функцию с "прибитой гвоздями" ячейкой, с которой начинаем.

Код
=Rio_Mark(B$4)

Далее протягиваем. Функция ориентируется на содержимое ячеек в столбце справа и на содержимое ячейки сверху. В принципе, по моему алгоритму можно реализовать и формулами... но скорее всего это будет длинно и слабо оптимально. Сам код:

[vba]
Код
Function Rio_Mark(rngX As Range) As String

'Author:    Roman "Rioran" Voronov
'Date:      the 7-th of November, 2014
'Feedback:  voronov_rv@mail.ru

Dim A As Long       'Current row
Dim B As Long       'Current column
Dim C1 As Byte      'Position of the first "."
Dim C2 As Byte      'Position of the second "."

Dim StrX As String

A = Application.Caller.Row
B = Application.Caller.Column
StrX = Cells(A - 1, B).Value
C1 = InStr(1, StrX, ".")
C2 = InStr(C1 + 1, StrX, ".")

If rngX.Row = A Then
     Rio_Mark = "1"
ElseIf Cells(A, B + 1).Value = "" And Cells(A + 1, B + 1).Value = "" Then
     Rio_Mark = CStr(Int(Left(StrX, C1 - 1)) + 1)
ElseIf Cells(A, B + 1).Value = "" And Cells(A - 1, B + 1).Value = "" Then
     Rio_Mark = StrX & ".1"
ElseIf Cells(A, B + 1).Value = "" Then
     Rio_Mark = Left(StrX, C1) & CStr(Int(Mid(StrX, C1 + 1, C2 - C1 - 1)) + 1)
ElseIf Cells(A - 1, B + 1).Value = "" Then
     Rio_Mark = StrX & ".1"
Else
     Rio_Mark = Left(StrX, C2) & CStr(Int(Right(StrX, Len(StrX) - C2)) + 1)
End If

End Function
[/vba]

Автор - Rioran
Дата добавления - 07.11.2014 в 14:47
VEKTORVSFREEMAN Дата: Пятница, 07.11.2014, 14:50 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Rioran, спасибо за вариант. Попробую, что получится.)
С понедельника наведу справки как относятся к макросам те люди которым я сбрасываю его на почту.


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеRioran, спасибо за вариант. Попробую, что получится.)
С понедельника наведу справки как относятся к макросам те люди которым я сбрасываю его на почту.

Автор - VEKTORVSFREEMAN
Дата добавления - 07.11.2014 в 14:50
Rioran Дата: Пятница, 07.11.2014, 14:54 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
как относятся к макросам те люди
VEKTORVSFREEMAN, Вы можете 2-м макросом или быстро вручную превратить формулы нумерации в значения, тогда мнением тех людей можно пренебречь =)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение
как относятся к макросам те люди
VEKTORVSFREEMAN, Вы можете 2-м макросом или быстро вручную превратить формулы нумерации в значения, тогда мнением тех людей можно пренебречь =)

Автор - Rioran
Дата добавления - 07.11.2014 в 14:54
Формуляр Дата: Суббота, 08.11.2014, 00:27 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
VEKTORVSFREEMAN,
предлагаю заглянуть ещё сюда.


Excel 2003 EN, 2013 EN
 
Ответить
СообщениеVEKTORVSFREEMAN,
предлагаю заглянуть ещё сюда.

Автор - Формуляр
Дата добавления - 08.11.2014 в 00:27
Nic70y Дата: Суббота, 08.11.2014, 07:07 | Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 9006
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕСЛИ(И(I4<>"";I5<>"");СЧЁТ(B$2:B2)+1;ЕСЛИ(I4<>"";ПСТР(B3&".";1;ПОИСК(".";B3&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(B3&".0";ПОИСК(".";B3&".0")+1;ДЛСТР(B3));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(I3<>"";B3&".";ЛЕВБ(B3;ПОИСК(".";ПОДСТАВИТЬ(B3;".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(I4="";B3&ЕСЛИ(I3="";"";".0");"");".";ПОВТОР(" ";15));15)+1))
К сообщению приложен файл: 97.xlsx (27.7 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ЕСЛИ(И(I4<>"";I5<>"");СЧЁТ(B$2:B2)+1;ЕСЛИ(I4<>"";ПСТР(B3&".";1;ПОИСК(".";B3&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(B3&".0";ПОИСК(".";B3&".0")+1;ДЛСТР(B3));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(I3<>"";B3&".";ЛЕВБ(B3;ПОИСК(".";ПОДСТАВИТЬ(B3;".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(I4="";B3&ЕСЛИ(I3="";"";".0");"");".";ПОВТОР(" ";15));15)+1))

Автор - Nic70y
Дата добавления - 08.11.2014 в 07:07
buchlotnik Дата: Суббота, 08.11.2014, 14:33 | Сообщение № 13
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Nic70y, нет слов - круто! hands
 
Ответить
СообщениеNic70y, нет слов - круто! hands

Автор - buchlotnik
Дата добавления - 08.11.2014 в 14:33
VEKTORVSFREEMAN Дата: Понедельник, 10.11.2014, 06:13 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Nic70y, спасибо за вариант, но тем не менее остаётся проблема как указано в сообщении № 4


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеNic70y, спасибо за вариант, но тем не менее остаётся проблема как указано в сообщении № 4

Автор - VEKTORVSFREEMAN
Дата добавления - 10.11.2014 в 06:13
VEKTORVSFREEMAN Дата: Понедельник, 10.11.2014, 06:33 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Rioran, спасибо за вариант, но проблема всё та же как в сообщении №4 при вставке новых строк. Т.к. рабочее поле (с данными) отчёта содержит много формул, что бы добавить строки я копирую уже имеющиеся и часто приходится их вставлять не в конец, а в середину блока (например пару строк между 1.1.3 и 1.1.4). Тут то и происходит нюанс, что необходимо делать заново протяжку нумерации по блоку вниз с пункта 1.1.1
Видимо вариант, не вариант и с формулами и с макросами.


"Опыт - это то, что получаешь, не получив того, что хотел"


Сообщение отредактировал VEKTORVSFREEMAN - Понедельник, 10.11.2014, 06:38
 
Ответить
СообщениеRioran, спасибо за вариант, но проблема всё та же как в сообщении №4 при вставке новых строк. Т.к. рабочее поле (с данными) отчёта содержит много формул, что бы добавить строки я копирую уже имеющиеся и часто приходится их вставлять не в конец, а в середину блока (например пару строк между 1.1.3 и 1.1.4). Тут то и происходит нюанс, что необходимо делать заново протяжку нумерации по блоку вниз с пункта 1.1.1
Видимо вариант, не вариант и с формулами и с макросами.

Автор - VEKTORVSFREEMAN
Дата добавления - 10.11.2014 в 06:33
Nic70y Дата: Понедельник, 10.11.2014, 07:59 | Сообщение № 16
Группа: Друзья
Ранг: Экселист
Сообщений: 9006
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕСЛИ(И(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ИНДЕКС(I$1:I$1002;СТРОКА()+1)<>"");СЧЁТ(B$1:ИНДЕКС(B$1:B$1002;СТРОКА()-1))+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";1;ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0";ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0")+1;ДЛСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)<>"";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";ЛЕВБ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);ПОИСК(".";ПОДСТАВИТЬ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())="";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)="";"";".0");"");".";ПОВТОР(" ";15));15)+1))


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ЕСЛИ(И(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ИНДЕКС(I$1:I$1002;СТРОКА()+1)<>"");СЧЁТ(B$1:ИНДЕКС(B$1:B$1002;СТРОКА()-1))+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";1;ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0";ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0")+1;ДЛСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)<>"";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";ЛЕВБ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);ПОИСК(".";ПОДСТАВИТЬ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())="";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)="";"";".0");"");".";ПОВТОР(" ";15));15)+1))

Автор - Nic70y
Дата добавления - 10.11.2014 в 07:59
VEKTORVSFREEMAN Дата: Понедельник, 10.11.2014, 08:12 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 772
Репутация: 130 ±
Замечаний: 0% ±

MS Office Excel 2010
Nic70y, БРАВО!!! hands
Спасибо огромное! Всё работает именно так как и нужно было. Результат 101% first


"Опыт - это то, что получаешь, не получив того, что хотел"
 
Ответить
СообщениеNic70y, БРАВО!!! hands
Спасибо огромное! Всё работает именно так как и нужно было. Результат 101% first

Автор - VEKTORVSFREEMAN
Дата добавления - 10.11.2014 в 08:12
troyanarf Дата: Четверг, 21.07.2022, 20:40 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Добрый день всем! Или утро/вечер/ночь, у кого что) Подскажите, а если нумерация более многоуровневая, то как можно видоизменить формулу? Долго крутила-вертела, но это это уровень сверхпрофессионала прям, а я застряла на более низком уровне :snap: :snap: Формула в сообщении 16 идеальна, но вот разобраться в ней для меня невозможно, к сожалению.... Помогите, пожалуйста
:shy:

=ЕСЛИ(И(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ИНДЕКС(I$1:I$1002;СТРОКА()+1)<>"");СЧЁТ(B$1:ИНДЕКС(B$1:B$1002;СТРОКА()-1))+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";1;ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0";ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0")+1;ДЛСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)<>"";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";ЛЕВБ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);ПОИСК(".";ПОДСТАВИТЬ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())="";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)="";"";".0");"");".";ПОВТОР(" ";15));15)+1))
 
Ответить
СообщениеДобрый день всем! Или утро/вечер/ночь, у кого что) Подскажите, а если нумерация более многоуровневая, то как можно видоизменить формулу? Долго крутила-вертела, но это это уровень сверхпрофессионала прям, а я застряла на более низком уровне :snap: :snap: Формула в сообщении 16 идеальна, но вот разобраться в ней для меня невозможно, к сожалению.... Помогите, пожалуйста
:shy:

=ЕСЛИ(И(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ИНДЕКС(I$1:I$1002;СТРОКА()+1)<>"");СЧЁТ(B$1:ИНДЕКС(B$1:B$1002;СТРОКА()-1))+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())<>"";ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";1;ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&"."))&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0";ПОИСК(".";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".0")+1;ДЛСТР(ИНДЕКС(B$1:B$1002;СТРОКА()-1)));".";ПОВТОР(" ";15));15)+1;ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)<>"";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&".";ЛЕВБ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);ПОИСК(".";ПОДСТАВИТЬ(ИНДЕКС(B$1:B$1002;СТРОКА()-1);".";"\";1))))&ПРАВБ(ПОДСТАВИТЬ(ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА())="";ИНДЕКС(B$1:B$1002;СТРОКА()-1)&ЕСЛИ(ИНДЕКС(I$1:I$1002;СТРОКА()-1)="";"";".0");"");".";ПОВТОР(" ";15));15)+1))

Автор - troyanarf
Дата добавления - 21.07.2022 в 20:40
troyanarf Дата: Четверг, 21.07.2022, 20:51 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Саму таблицу не приложила, что хотелось бы в итоге :shy:
К сообщению приложен файл: 4087598.xlsx (31.4 Kb)
 
Ответить
СообщениеСаму таблицу не приложила, что хотелось бы в итоге :shy:

Автор - troyanarf
Дата добавления - 21.07.2022 в 20:51
_Boroda_ Дата: Пятница, 22.07.2022, 09:43 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Если коротенечко, то формула проверяет, есть ли текст в столбце L в текущей строке и строке ниже. Если оба ДА, то это смена организации, если ДА только первое, то это смена объекта, если оба нет, то смена вида работ. А нумерация - это уже дело техники.
А теперь посмотрите, чем в Вашей таблице отличаются друг от друга ячейки L27 и L32? Ну, кроме раскраски. Или 22 и 45 строки.
Поэтому именно на таком примере задача формулами в общем случае нерешаема. Нужен Ваш конкретный файл, в котором (по возможности) оставлено как можно больше информации - форматирование, расположение, сами данные, если это не конф.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли коротенечко, то формула проверяет, есть ли текст в столбце L в текущей строке и строке ниже. Если оба ДА, то это смена организации, если ДА только первое, то это смена объекта, если оба нет, то смена вида работ. А нумерация - это уже дело техники.
А теперь посмотрите, чем в Вашей таблице отличаются друг от друга ячейки L27 и L32? Ну, кроме раскраски. Или 22 и 45 строки.
Поэтому именно на таком примере задача формулами в общем случае нерешаема. Нужен Ваш конкретный файл, в котором (по возможности) оставлено как можно больше информации - форматирование, расположение, сами данные, если это не конф.

Автор - _Boroda_
Дата добавления - 22.07.2022 в 09:43
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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