Содержание
- Программные идентификаторы OLE (Office)
- Элементы ActiveX
- Microsoft Access
- Microsoft Excel
- Microsoft Graph
- Microsoft Outlook
- Microsoft PowerPoint
- Microsoft Word
- Поддержка и обратная связь
- Использование функций ВЫЗВАТЬ и РЕГИСТРАТОР
- В этой статье
- Описание
- Типы данных
- Замечания
- Дополнительные сведения о типах данных
- Типы данных F и G
- Тип данных K
- Тип данных O
- Тип данных P
- Тип данных R — вызов функций Microsoft Excel из библиотек DLL
- Переменные функции и повторные вычисления
- Изменение на месте — функции, объявленные как недействительные
Программные идентификаторы OLE (Office)
Используйте программный идентификатор OLE (иногда называемый ProgID) для создания объекта службы автоматизации. В приведенных ниже таблицах перечислены программные идентификаторы OLE для элементов ActiveX и приложений Office.
Элементы ActiveX
Чтобы создать элементы управления ActiveX, перечисленные в таблице ниже, используйте соответствующий программный идентификатор OLE.
Для создания элемента управления | Используйте этот идентификатор |
---|---|
CheckBox | Forms.CheckBox.1 |
ComboBox | Forms.ComboBox.1 |
CommandButton | Forms.CommandButton.1 |
Frame | Forms.Frame.1 |
Image | Forms.Image.1 |
Label | Forms.Label.1 |
ListBox | Forms.ListBox.1 |
MultiPage | Forms.MultiPage.1 |
OptionButton | Forms.OptionButton.1 |
ScrollBar | Forms.ScrollBar.1 |
SpinButton | Forms.SpinButton.1 |
TabStrip | Forms.TabStrip.1 |
TextBox | Forms.TextBox.1 |
ToggleButton | Forms.ToggleButton.1 |
Microsoft Access
Чтобы создать объекты Microsoft Access, перечисленные в таблице ниже, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии Access, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте один из этих идентификаторов |
---|---|
Application | Access.Application |
CurrentData | Access.CodeData, Access.CurrentData |
CurrentProject | Access.CodeProject, Access.CurrentProject |
Microsoft Excel
Чтобы создать объекты Microsoft Excel, перечисленные в таблице ниже, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии Excel, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте этот идентификатор | Примечания |
---|---|---|
Application | Excel.Application | |
Workbook | Excel.AddIn | |
Workbook | Excel.Chart | Возвращает книгу, содержащую два листа, один для диаграммы, а другой для ее данных. Активным является лист диаграммы. |
Workbook | Excel.Sheet | Возвращает книгу с одним листом. |
Microsoft Graph
Чтобы создать объекты Graph, перечисленные в следующей таблице, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии Graph, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте этот идентификатор |
---|---|
Application | MSGraph.Application |
Chart | MSGraph.Chart |
Microsoft Outlook
Чтобы создать объекты Microsoft Outlook, перечисленные в таблице ниже, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии Outlook, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте этот идентификатор |
---|---|
Application | Outlook.Application |
Чтобы создать элементы управления ActiveX, специфические для форм Outlook и перечисленные в следующей таблице, используйте соответствующий программный идентификатор OLE.
Для создания элемента управления Microsoft Office Outlook | Используйте этот идентификатор |
---|---|
OlkBusinessCardControl | Outlook.OlkBusinessCardControl |
OlkCategory | Outlook.OlkCategoryStrip |
OlkCheckBox | Outlook.OlkCheckBox |
OlkComboBox | Outlook.OlkComboBox |
OlkCommandButton | Outlook.OlkCommandButton |
OlkContactPhoto | Outlook.OlkContactPhoto |
OlkDateControl | Outlook.OlkDateControl |
OlkFrameHeader | Outlook.OlkFrameHeader |
OlkInfoBar | Outlook.OlkInfoBar |
OlkLabel | Outlook.OlkLabel |
OlkListBox | Outlook.OlkListBox |
OlkOptionButton | Outlook.OlkOptionButton |
OlkPageControl | Outlook.OlkPageControl |
OlkSenderPhoto | Outlook.OlkSenderPhoto |
OlkTextBox | Outlook.OlkTextBox |
OlkTimeControl | Outlook.OlkTimeControl |
OlkTimeZoneControl | Outlook.OlkTimeZone |
Microsoft PowerPoint
Чтобы создать объекты Microsoft PowerPoint, перечисленные в таблице ниже, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии PowerPoint, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте этот идентификатор |
---|---|
Application | PowerPoint.Application |
Microsoft Word
Чтобы создать объекты Microsoft Word, перечисленные в таблице ниже, используйте один из соответствующих программных идентификаторов OLE. При использовании идентификатора без суффикса с номером версии создается объект самой последней версии Word, доступной на компьютере, на котором выполняется макрос.
Для создания объекта | Используйте один из этих идентификаторов |
---|---|
Application | Word.Application |
Document | Word.Document, Word.Template |
Global | Word.Global |
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Использование функций ВЫЗВАТЬ и РЕГИСТРАТОР
Важно: Внимание! Неправильное изменение реестра может привести к серьезному повреждению системы и вызвать необходимость ее переустановки. Корпорация Майкрософт не гарантирует успешного устранения неполадок, вызванных ошибками при редактировании реестра. Перед изменением реестра сохраните архивные копии любых важных данных. Новейшие сведения об использовании и защите реестра вашего компьютера см. в справке Microsoft Windows.
В этой статье описаны синтаксис формулы и использование функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД в Microsoft Excel.
Примечание: Функции ВЫЗВАТЬ и РЕГИСТРИРУЙТЕ недоступны в Excel в Интернете.
В этой статье
Описание
Ниже описаны аргументы и типы возвращаемых значений функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД. Аргументы и возвращаемые значения зависят от операционной среды; эти различия отражены в таблице типов данных.
Типы данных
В функциях ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД аргумент «типы_данных» задает типы данных возвращаемых значений и всех аргументов для функции библиотеки DLL или кодового ресурса. Первый знак определяет тип данных возвращаемого значения. Остальные знаки указывают типы данных всех аргументов. Например, функция DLL, возвращающая число с плавающей запятой и принимающая целое число и число с плавающей запятой в качестве аргументов, требует в качестве аргумента «типы_данных» строку «BIB».
Приведенная ниже таблица содержит полный список кодов типов данных, распознаваемых Microsoft Excel, описание каждого типа данных и способ передачи значения, а также типичные объявления типов данных в языке программирования C.
Объявление в языке C
Логическое значение
(ЛОЖЬ = 0), ИСТИНА = 1)
8-байтовое число с плавающей запятой
Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255)
Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)
8-байтовое число с плавающей запятой
Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255 знаков)
Ссылка (изменяется на месте)
Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)
Ссылка (изменяется на месте)
2-байтовое беззнаковое целое
unsigned short int
2-байтовое целое число со знаком
4-байтовое целое число со знаком
Логическое значение
(ЛОЖЬ = 0, ИСТИНА = 1)
2-байтовое целое число со знаком
4-байтовое целое число со знаком
Передаются три аргумента:
unsigned short int *
unsigned short int *
double [ ]
Структура данных Microsoft Excel OPER
Структура данных Microsoft Excel XLOPER
Замечания
Объявления для языка C основаны на предположении, что компилятор использует по умолчанию 8 байт для хранения чисел с двойной точностью, 2 байта — для коротких целых и 4 — для длинных целых.
В среде программирования Microsoft Windows все указатели являются дальними. Например, в Microsoft Windows код типа данных D должен быть объявлен как unsigned char far *.
При вызове всех функций в библиотеках DLL и кодовых ресурсах используются соглашения о вызове Pascal. Большинство компиляторов C позволяют использовать соглашения о вызове Pascal, добавив ключевое слово pascal в объявление функции, как показано в примере: pascal void main (rows,columns,a)
Если функция использует для возвращаемого значения тип данных pass-by-reference, в качестве возвращаемого значения можно передать null-указатель. Microsoft Excel будет интерпретируется как #NUM! (значение ошибки).
Дополнительные сведения о типах данных
Этот раздел содержит подробную информацию о типах данных F, G, K, O, P и R, а также другие сведения об аргументе «типы_данных».
Типы данных F и G
При работе с типами данных F и G функция может модифицировать буфер строки, выделенный приложением Microsoft Excel. Если код типа возвращаемого значения — F или G, значение, возвращаемое функцией, игнорируется. Вместо этого в списке аргументов функции выполняется поиск первого подходящего типа данных (F или G), и текущее содержимое выделенного буфера строки рассматривается как возвращаемое значение. В приложении Microsoft Excel для аргумента выделяется 256 байт, поэтому возвращаемая функцией строка может оказаться длиннее полученной.
Тип данных K
Тип данных K использует указатель на структуру FP, имеющую переменную длину. Необходимо следующим образом определить эту структуру в динамической библиотеке или программном ресурсе:
Объявление double array[1] выделяет память только для массива, содержащего один элемент. Число элементов в реальном массиве равно числу строк, умноженному на число столбцов.
Тип данных O
Тип данных O может использоваться только как аргумент, но не как возвращаемое значение. Этот тип передает три элемента: указатель на число строк в массиве, указатель на число столбцов в массиве и указатель на двухмерный массив чисел с плавающей запятой.
Вместо того чтобы возвращать значение, функция может изменять массив, переданный типом данных O. Для этого в качестве >O можно использовать type_text O. Дополнительные сведения см. в приведенной ниже таблице «Изменение на месте — функции, объявленные как недействительным».
Тип данных O был создан для обеспечения прямой совместимости с динамическими библиотеками Fortran, которые передают аргументы по ссылке.
Тип данных P
Тип данных P представляет собой указатель на структуру OPER. Структура OPER содержит 8 байт данных, за которыми следует 2-байтовый идентификатор, который определяет тип данных. При работе с типом данных P функция DLL или программный ресурс могут возвращать любой тип данных Microsoft Excel.
Структура OPER определяется следующим образом:
typedef struct _oper
Поле тип содержит одно из следующих значений:
Используемое поле в val
Строка (первый байт содержит длину строки)
Ошибка. Значения ошибок:
Последние два значения могут использоваться только как аргументы, но не как возвращаемые значения. Значение 128 (пропущенный аргумент) передается в том случае, если при вызове опущен какой-либо аргумент. Значение 256 (пустая ячейка) передается в случае ссылки на пустую ячейку при вызове функции.
Тип данных R — вызов функций Microsoft Excel из библиотек DLL
Тип данных R — это указатель на структуру XLOPER, которая является расширенной версией структуры OPER. В Microsoft Excel 4.0 и более поздних версиях приложения тип данных R можно использовать для создания библиотек DLL и ресурсов кода, которые вызывают функции Microsoft Excel. Используя структуру XLOPER, функции DLL могут передавать ссылки на лист и осуществлять не только передачу данных, но и управление потоком. Полное описание типа данных R и программного интерфейса приложения Microsoft Excel выходит за рамки данного раздела. Подробные сведения о типе данных R, программном интерфейсе Microsoft Excel и многих других технических аспектах этого приложения можно найти в пакете Руководство разработчика Microsoft Office XP.
Переменные функции и повторные вычисления
Microsoft Excel обычно вычисляет функцию из динамической библиотеки (или программный ресурс) тогда, когда она вводится в ячейку, когда изменяется одна из влияющих ячеек или когда ячейка вычисляется в процессе выполнения макроса. Можно сделать функцию DLL или программный ресурс на листе временными, то есть они будут вычисляться всякий раз, когда пересчитывается лист. Для этого в конец аргумента «типы_данных» надо добавить восклицательный знак (!).
Например, в Microsoft Excel для Windows приведенная ниже формула будет пересчитываться всякий раз, когда будет пересчитываться лист:
Изменение на месте — функции, объявленные как недействительные
В качестве типа возвращаемого значения в аргументе «типы_данных» можно использовать одну цифру n (от 1 до 9). Это указывает приложению Microsoft Excel на необходимость изменить переменную, указанную аргументом номер n в аргументе «типы_данных», а не возвращать значение. Этот прием иногда называют изменением на месте. Типом n-го аргумента должен быть тип, передаваемый по ссылке (C, D, E, F, G, K, L, M, N, O, P или R). Функция DLL или программный ресурс при работе с языком C должны быть объявлены с ключевым словом void (или, при программировании на языке Pascal, с ключевым словом procedure).
Например, функция DLL, которая получает строку, заканчивающуюся знаком 0, и два указателя на целые числа в качестве аргументов, может отредактировать строку на месте. Используйте «1FMM» в качестве аргумента «типы_данных» и объявите функцию как void.
В предыдущих версиях Microsoft Excel 4.0 для изменения первого аргумента использовался знак > 4.0; изменить любой из аргументов, кроме первого, не существует. Знак > эквивалентен n = 1 в Microsoft Excel 4.0 и более поздних версиях.
Источник
Идентификаторы
Идентификаторами в VBA являются названия переменных, констант, функций, процедур, классов, типов данных и прочих элементов, не являющихся зарезервированными словами языка (названиями инструкций, операторов, встроенных функций и т. д.).
Среда разработки VBA поддерживает кодировку символов Unicode. Поддержка данной кодировки разработки означает, что программист может использовать в составе идентификаторов символы любого поддерживаемого алфавита (например, кириллицы).
При формировании идентификаторов необходимо учитывать следующее.
• Идентификатор должен состоять только из букв (любого алфавита), цифр и символа подчеркивания.
• Первым символом идентификатора должна быть буква.
Внимание!
VBA не различает регистр символов в идентификаторах. Это значит, что идентификаторы strmyText и strMyText будут представлять одну и ту же переменную. Это же справедливо и для идентификаторов процедур, функций, классов и т. д.
Рассмотрим примеры корректных идентификаторов VBA:
strText
CUSTOM_Data2
Функция_Суммы
РасчетПрибыли
Приветствую
Надо как-то в Excel или в LibreOffice настроить автоматическую генерацию уникального числа у каждой строки с заполненными данными.
Есть два столбца — ID (столбец №1) и имя человека (столбец №2). Если добавляю новое имя в столбец №2, то в этой строке в столбце №1 должен появиться уникальный идентификатор, к примеру, цифровой код (цифра). Но есть одна особенность. Допустим, что есть пять записей в файле с айдишниками с 1 по 5. Я удаляю пятую запись, строку целиком или очищаю ее, а затем добавляю новую запись. А вот у же у новой записи по факту шестой, но с учетом ранее удаленной записи, новая запись будет пятой, но ее ID уже не должен быть пятым, но должен быть шестым.
На картинке пояснил тремя блоками:
- добавил записи, добавились автоматом ID
- удалил пятую запись
- добавил новую запись; по факту ее ID должен быть новым, ранее не использовавшимся.
Подскажите пожалуйста реализацию.
-
Вопрос заданболее трёх лет назад
-
5452 просмотра
Пригласить эксперта
Используйте ms access или любую БД. Они для этого и предназначены.
в Excel можно реализовать через макросы, но это такой костыль, что всем костылям костыль:
Добавьте код макроса в код страницы (редактор кода vba->двойной щелчок по нужному листу в менеджере проекта), диапазон ваших значений B1:B1000
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B1:B1000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
X = 5
Y = 1
If Cells(Y, X).Value = "" Then Cells(Y, X).Value = 0
On Error GoTo here
If Target.Value <> "" Then
answer = MsgBox("Increment?", vbYesNo + vbQuestion, "Empty Sheet")
If answer = vbYes Then Target.Offset(0, -1).Value = Cells(Y, X).Value + 1
If answer = vbYes Then Cells(Y, X).Value = Cells(Y, X).Value + 1
Else
Target.Offset(0, -1).Value = ""
End If
here:
Debug.Print Err
End If
End Sub
Можно использовать ID на основе текущего времени, например 170911181042, 170911181057 и т.п. Со вставкой такого числа справится простенький макрос типа:
Sub typeID()
mydate = Date
mytime = Time
mydateF = Format(mydate, "yymmdd")
mytimeF = Format(mytime, "HhMmSs")
ID = mydateF & mytimeF
ActiveCell.Value = ID
End Sub
Варианты с GUID:
1. Макрос:
Public Function GetGUID() As String
GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
End Function
2. Формула:
=CONCATENATE(DEC2HEX(RANDBETWEEN(0;4294967295);8);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;4294967295);8);DEC2HEX(RANDBETWEEN(0;42949);4))
-
Показать ещё
Загружается…
15 апр. 2023, в 13:55
55000 руб./за проект
15 апр. 2023, в 13:45
1000 руб./за проект
15 апр. 2023, в 13:28
500 руб./за проект
Минуточку внимания
�����: ����������� ������ �� ����������: ������, �����, ����������
6.2. ������� � �������, ������������ � Excel
��������� �������� Excel �������� ����� ������� ����������� ���������, ������ ��������� �������� Word. � ������������ ������� ��� ����������� ���, ��� Excel ��������������� ���������� ��������� �������, ����� ���� � �� ���������� ���������� ��� �����. ��������������, ���������� ������������ ������������, � ������� ������ ���� ������ ������ ������������ ���������. � ���� ������� �� �������� ��������� �������� �������� � �������, ����������� ��� �������� � ����������� ������ � Excel.
���������� � ������� � ������������� ������ �������� �����, ������� ����� ��������� �� ������� ���� ���� � ���������. � Excel ������� ���������� ����� ���������.
��������� � ����������� ������ ������������� �������� ��������. ��������� Excel ������������ ������ � ������� �����������: �����������, ��������, �����������, ������� � ��.
��� � �������������, ������� ������������� ����������� ��������� �� �����-���� ������ (������, ��������, ������� � �.��.).
��������� � ���������� (�������������) ��������. ���������� ����� ����, ��������, ������������� ����� ���� �����-���� �����.
����������� ���� � ����, ���������� ������ ������, ������� ������������� ��� ������ � ���������� ��������. ��� ������ ������������ ���� ����� �������� �� ������� ������ ������� ���� ���� ������ ���������� ������ Shift+F10 .
������ � ���������, ������� �������� �� ���������� � Excel ����� ���������������� Visual Basic for Application (VBA) � ��������������� ��� ���������� ��� �������������� ������������. ������ � �������� �������������� � ������� ������� ������ ? ������ .
������ � ����� ����� ���� ��������, ������������ ��� ������ �����. ������� �������, ������ ������������ ����� ������ ��������� ������ ����, ������������ ��� ����� ������.
��������� � ��������� ������� ���������� ������ ��������� �������� ����������. �������� �������� �� ��������� Excel ����������� � ����, ������� ����������� � ������� ������� �������� ���� ������ ? ��������� .
������� � ������� ���������� (���������, ������� ���� ������).
�������� � ���� ���� ������, ������� ���������� ��� ���������� � ������� ��� ����������. � Excel ������������ ��������� ���� ����������: ��������������, ���������, ��������� ��������� � ��������� ������.
������ ������������ � ������, ��������� �� ������ � ���� ��������� ����������, ������������ ��� ����������� ������ � �������� � ������ ������ ������. ���������/���������� ���������������� ������� ����������� � ������� ��������������� ������� ������� ��� ? ������ ������������ .
������ � ����� ����������� ������� ����� (��������� ���� ��������) �� �������� �������� � ������� ��������. �� ������ ����� �������� ��������� �������: ������� �����, ��������� ������� ����, ������� ����, ��������� ������� ������, �������� ����� � ������� �����, �������� ����� � ���������� ������� ������, ����������� �������, ���������.
���������������� ��������� � �������� �������������� ������������ � ����������. ��������� �������� � ���� ����, ������ ������������, � ��. � Excel ����������� ����������� ���������������� ���������, ������������ � ����������� MS Office.
���������� � ��������������� ���������� ������������� ���������, ����������� � ������������ ������ � ���������� ���������� �� ����������� ���� ������. ����� �������� ���������� � �����-���� ������, ����� �������� �� �������� � ��������� ������� ������������ ���� �������� ���������� , ����� ���� � ���������� ������ ��������� �����.
������� ����� � ����, ������� ���������, ������������� � ����������� ���������� Excel. �������� ����������� �������� ������� ����� �������� ������� ���� (��. ����).
������� ���� � �������� ������� ������� �����, ��������������� ��� �����, �������������� � �������� ������, � ����� ��� ���������� ��������. �� ��������� � ������ ������� ����� �������� ��� ������� �����. �������� ����������� �������� �������� ����� �������� ������ (��. ����). ������� ���� ������� �� 16777216 �����, ������� �������� ����� �� 65536 ����� � 256 ��������.
������ � ����� ������ ���� ��������� �����.
�������������� � ��������� ���������� ������ (�� ��������� ���� � ������, �������, � ��.) ���� ��������� ������������� ������, ������������ � ������. ��������� �������������� ������ ���������� �� �� �����������, � ��������. �� ������, ��� ����� ��������� �������������� ������������ �������� � ������ ����� �� ��������� � �� ����������� ��������� (�������� ����������� ������ � ����������: � ������ �������� �������� 0,33 , �� � ������������ � ����������� �������������� �� ������ ����� ������������ �������� 0,3 ).
������� � ����������� ���������� Excel, ��������������� ��� ��������, ���������� � ������� ������. ������� ����� �������� � ���� ���������, ��������, ������, ��� ������ (���������) � ������� . ��������� ������ ���� �����:
�� �������������� �������� � ��������, ��������������� ��� ���������� �������������� �������� � �������� � �������� ���������� �������� ��������;
�� �������� ��������� � ������ �������� ������������ ��� ��������� ������ � ������ � �������� ���������� ���������� �������� ������ ��� ���� ;
�� ��������� �������� � ��������, ������������ ��� ����������� ������.
������� � ������� ������� ������� Excel. ������ ������� ����� �������� � ���� ���������, ��������, ������, ��� ������ (���������) � ������� (��. ����). ���������������� ������� � ��� �������, ���������� ������������� �� ����� VBA.
����������� ������� � ������������� ���������, ��������� �� ������ ����� � ��������, ������� ��������� �� ����� � ��������� ����.
������ � ���������� (������������) ����� �������� ����� (����������� �������), ��������������� ��� ����� � �������� ����������. ������ ������ ����� ��������� �����, ����� ��� ������� (��. ����). ����� �����, ��� ������ � �������� ������������ ��������� ��������:
�� ����� � ��� ����������������� (����������) ������; ����� ������� �� ����� (������) ������� � ������ ������, �� ����������� ������� ����������� ������ ������;
�� ������ � �������� �� ����� ������. ������ ����� ���� ����������� (�.��. �� ������������� ��� ����������� � ����������� ������), �������������� (��� ������ ���������� ��� ����������� � ����������� ������) � ����������. ������� ������ � ��� ������ �� ������, ������������� � ������ ������� �����.�
Уникальный идентификатор списка
Пусть у нас есть какой-либо список, к примеру фамилий, и мы хотим каждому элементу присвоить уникальный номер.
Сделать это можно следующим образом.
Первому элементу присваиваем номер 1.
Для второго и последующих составляем формулу пользуясь таким алгоритмом: если элемент встречается в списке первый раз, то присваиваем ему очередной номер, если это не первое появление, то у него идентификатор уже есть в списке выше.
Чтобы проверить первое ли это появление элемента используем комбинацию функций ЕНД(ПОИСКПОЗ()).
Если это первое появление, то ПОИСКПОЗ() вернет #Н/Д, а функция ЕНД(#Н/Д) вернет ИСТИНА и мы смело присваиваем элементу номер МАКС() среди верхних идентификаторов плюс 1.
Если это не первое появление, то ЕНД(ПОИСКПОЗ()) возвращает ЛОЖЬ и мы через функцию ВПР() находим уже имеющийся у элемента идентификатор.
В конечном итоге получаем такую формулу (для второго элемента):
=ЕСЛИ(ЕНД(ПОИСКПОЗ(C3;C$2:C2;0));МАКС(D$2:D2)+1;ВПР(C3;C$2:D2;2;ЛОЖЬ))
Дальше просто копируем эту формулу.
Похожие по тематике посты — еще почитать: