Как использовать данные Фамилия Имя Отчество в проверке данных с диапозоном вывода, в случае возможного их изменения в будущем?
Цель: привязывать к ФИО определённые данные/транзакции в таблице. Использовать список ФИО, с помощью проверки данных, с возможностью выбора заполняющему. Заполняющему ориентироваться на уникальный номер не представляется возможным, и не удобно, гораздо практичнее ориентироваться по ФИО. Уникальный номер присваивается уже после выбранного ФИО.
Как использовать данные Фамилия Имя Отчество в проверке данных с диапозоном вывода, в случае возможного их изменения в будущем? (исправление опечаток/изменение фамилии).
В данный момент происходит следующим образом:
На странице с ФИО, имеются список ФИО и уникальный НОМЕР для каждого ФИО.
Страница с ФИО
| A № | B ФИО | |
|---|---|---|
| 1 | 001 | Тестов Тест Тестович |
| 2 | 002 | Пупкин Василий Иванович |
На странице с транзакциями присваивается уникальный номер, в зависимости от выбранной ФИО в выпадающем списке, организованном с помощью проверки данных и выводом диапазона ФИО со страницы "Страница с ФИО". Формула:
=FILTER('Страница с ФИО'!A:A, 'Страница с ФИО'!B:B=B1)
Страница с транзакциями
| A № | B ФИО | C Транзакция | |
|---|---|---|---|
| 1 | 001 | Тестов Тест Тестович | +100 |
| 2 | 002 | Пупкин Василий Иванович | +1000 |
| 3 | 001 | Тестов Тест Тестович | -10 |
| 4 | 001 | Тестов Тест Тестович | -20 |
| 5 | 002 | Пупкин Василий Иванович | -10 |
| 6 | 001 | Тестов Тест Тестович | -10 |
И всё бы ничего, всё работает, подсчёт совершенных транзакций ведётся по уникальному номеру.
Однако, когда Я вношу изменения в ФИО, формула, указанная выше перестаёт работать, так как введённое значение, уже не существует.

Как всё-таки правильно создавать базу данных на Google Sheets?
Создал для эксперементов таблицу, по ссылке: https://docs.google.com/spreadsheets/d/1xzWz_Qm_zg4zRohfWcF1pzXBiIs6qU1_H0k5wIH2dDM/edit?usp=sharing
С 9ой строки можно эксперементировать
Ответы (2 шт):
Насколько я понимаю задачу, я бы переделал flow по-принципу:
- Страница с ФИО, туда вносим контрагентов
- На странице с транзакциями подтягиваем ФИО через валидацию с первой страницы. С запретом ввода неправильных значений.
Учитесь работать с данными не так, как вздумается, а по каким-то правилам.
Иванова работала лет 5, вышла замуж, стала Бабаягова. Нормально? Вполне. Но как в Вашей таблице определить, например, стаж работы прелестной девушки Прекрасная (ну, не понравилась фамилия, поменяли через 3 года)?
Не ищите проблем на свою голову.
Простое решение: исправлять не в таблице, куда вносятся данные, а ТОЛЬКО в списке-источнике проверки данных.
Исправили, зашли в таблицу и заменили предыдущее ФИО на исправленное (вручную, макросом - неважно). Если нужно хранить данные об изменениях ФИО - хранить в отдельной таблице. Не нужно мух сажать на котлеты )
А наличие в рабочей базе разних имен для одного человека - это наличие (сейчас или в будущем) головной боли при работе с такими данными.
Но если трудности - это Ваше все :), ждите, кто переведет макрос, написанный на VBA для Excel
, на родной для Google-таблиц JS:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("B:B"), Target) Is Nothing Then
If Target.Cells.Count > 1 Then Exit Sub
If Target.Row < 2 Then Exit Sub
With Application: .ScreenUpdating = False: .EnableEvents = False: End With
If Target.Value <> "" Then
Cells(Target.Row, 1).Value = Application.VLookup(Target.Value, Worksheets("list").Range("A2:B100"), 2, 0)
End If
With Application: .ScreenUpdating = True: .EnableEvents = True: End With
End If
End Sub
Добавлять или изменять ФИО нужно только на листе, где расположен список.
При изменении в рабочей таблице в столбце В в столбец А записывается номер, соответствующий ФИО. Если изменить ранее созданную запись, будет изменен и номер.
После изменения в списке в рабочую таблицу при выборе ФИО будут подтягиваться новые данные, при этом записи в ранее заполненных строках не изменятся (если в них не менять ФИО).

