IF, LEFT, INDIRECT Функция Excel для диапазона PLSS
Я специалист по ГИС для кадастровой картографической компании.
Я использую Office 2010 и пытаюсь создать в Excel функцию, которая выводит раздел, район и диапазон из 16-значного идентификационного номера участка (PID) в отдельные столбцы.
PID начинается с 3 цифр населенного пункта, за которыми следуют две цифры номера раздела. Однако "обзорный поселок" не следует путать с поселком и радиусом действия PLSS. Тем не менее, каждый "обзорный поселок" попадает в сетку одного населенного пункта и площади в PLSS.
Каждый обзорный поселок состоит из 9 "листов карт" из старых листов миларских карт, которые содержали 4 раздела на карте. В "обзорном городке" 36 разделов. Девять листов карты с 4 разделами на листе - это 36.
SO. PID 0241800000001000
Survey township: 02
Map sheet: 4
Section: 18
PLSS township: 04
PLSS range : 06
До сих пор. Я могу легко собрать номер раздела. Я сейчас работаю над городком и полигоном. Я создал список ссылок в sheet2, в котором перечислены все листы карты в округе (011-209). В конкретном округе насчитывается 20 обзорных поселков. Формула должна ссылаться на список на листе 2, и если первые 3 символа PID для исследуемого населенного пункта 2 равны 021-029, то для ячейки населенного пункта должно быть (04S) для населенного пункта 4 на юге. Диапазон опроса в поселке (021-029) и выход в поселке PLSS (04S) - мои переменные, которые я буду изменять в каждом округе.
Вот что у меня так далеко:
=IF(LEFT(B2,3) = ("Sheet2!A1:A9"),"05"), IF(LEFT(B2,3) = ("Sheet2!B1:B9"), "04")
На листе 2,
- A1: A9 ссылается на список карт для съемочного городка (011-019)
- B1: B9 ссылается на список карт для съемочного городка 02 (021-029)
B2 - это идентификатор PID.
Выходные данные либо говорят мне "ЛОЖЬ", либо! ЗНАЧЕНИЕ #. Или это не с ошибкой.
2 ответа
Помимо получения награды за "Наиболее запутанную формулировку проблемы" (см. Комментарии @Scott), я думаю, что вы хотите сопоставить значения PID/ населенного пункта со списком в Sheet2
,
IF(LEFT(B2,3) = ("Sheet2!A1:A9"),"05")
это неправильно, но я могу сказать, что вы пытаетесь получить "04"
или же "05"
,
Вместо того, чтобы размещать эти "группы" в отдельных столбцах, попробуйте поместить все возможные значения PID в столбец. A
(еще Sheet2
). Теперь поместите нужный результат для этих значений в столбец B
, Должно выглядеть примерно так:
A | B
----+----
011 | 04
012 | 04
013 | 04
014 | 04
015 | 04
016 | 04
017 | 04
018 | 04
019 | 04
020 |
021 | 05
022 | 05
023 | 05
024 | 05
025 | 05
026 | 05
027 | 05
028 | 05
029 | 05
Теперь у вас есть справочная таблица. В которой следующая формула должна дать вам то, что вы хотите:
=INDEX(Sheet2!$B$1:$B$19,MATCH(LEFT(B2,3),Sheet2!$A$1:$A$19,0))
И да, столы могут быть вашими друзьями здесь (особенно на Sheet2
). Но опять же, у меня не было примера таблицы. Хотел бы помочь больше, но нам нужно больше информации.
Прочитав описание снова, ища ответы на мои предыдущие вопросы, я пришел к выводу, что каждый исследуемый населенный пункт не только попадает в сетку одного населенного пункта и площади диапазона в PLSS, но и соответствует ему, за исключением номенклатуры. Таким образом, все 9 листов обзорного городка 02 соответствуют старым 9 листам Township 04S Range 06W (или 06E). Поскольку вы сказали, что в текущем округе насчитывается 20 населенных пунктов, я создал гипотетическую "карту" страны, на которой показано наложение 20 обследованных населенных пунктов на сетку PLSS. (Поскольку у вас есть карты и вы знаете область, вы можете настроить мой пример в соответствии с вашими потребностями.) Я сделал эту гипотетическую карту пересеченной как по базовой линии, так и по меридиану, чтобы вы могли увидеть ее применение в этом случае.
Это "карта", которую я использовал для примера.
Преобразование этой карты в данные для вашего Sheet2 создает следующий лист:
Используя ваши образцы данных для PID 0241800000001000, я создал это как Sheet1:
Формула для клетки B2
является =LEFT(A2,2)
, чтобы извлечь номер населенного пункта из PID.
Формула для клетки C2
является =MID(A2,3,1)
, чтобы извлечь лист карты из PID.
Формула для клетки D2
является =MID(A2,4,2)
, чтобы извлечь номер раздела из PID.
Используя последнюю формулу в качестве руководства, вы сможете извлечь любую другую часть PID, которая является предсказуемой с позиции. Я предполагаю, что оставшиеся 10 цифр находятся в двух группах по 5 для секционных подразделений к востоку и северу от углов секций. (Полагаю, 8 000 ссылок Гюнтера сработают, если вы находитесь в месте, где все еще используется эта система, или даже в 5 цифрах умещаются дюймы).
Формула для клетки E2
является =VLOOKUP(VALUE(B2),Sheet2!$A$2:$C$21,2)
, чтобы найти значение (числовое) ячейки B2
в столбце A
Sheet2 и вернуть значение 2-го столбца в той же строке. Обратите внимание, что это один пункт, чтобы быть осторожным! Значения в столбце индексации Sheet2 должны быть числами, а не текстом. Таким образом, вместо "02" это только 2
, Это, вероятно, лучше, поскольку при вводе чисел Excel хочет хранить их как числа, а не как текст, если только вы не решите проблему с кавычками или явным форматированием ячейки.
Формула для клетки F2
является =VLOOKUP(VALUE(B2),Sheet2!$A$2:$C$21,3)
за исключением того, что это третий столбец, он работает так же, как формула в ячейке E2
,
Изменение данных в Sheet2 и ссылки на них в столбцах E и F Sheet1 должны позволить вам повторно использовать их для любого округа в вашем штате, если они используют одну и ту же систему с PID. Надеюсь, что по пунктам, которые я неправильно понял, вы сможете скорректировать приведенные здесь концепции, чтобы исправить их.
РЕДАКТИРОВАТЬ
Чтобы использовать одну и ту же систему для нескольких округов или наборов Survey Township, измените Sheet2, вставив два столбца в начале. Это для списка округов или других названий, которые вы хотите использовать для наборов Survey Township, и их соответствующего "диапазона" для поиска данных PLSS. Этот список должен быть в алфавитном порядке, так как другие наборы добавляются. В каждом округе будет свой набор из трех столбцов. Эти таблицы не должны быть сложены слева направо. Они могут быть организованы любым способом, который лучше всего подходит для вашего рабочего процесса. Их также не нужно хранить в любом порядке, только имена в столбце A
должно быть в порядке. Это образец с 3 сетами, которые я раскрасил только для того, чтобы было понятно, как они ломаются.
Это образец "карты" наборов. Я включил несколько перекрывающихся областей, поскольку знаю, что не все графства будут следовать удобно нарисованным границам PLSS. Таким образом, я предполагаю, что два разных поселка могут соответствовать одному и тому же PLSS Township/Range.
На первом листе Sheet1
вставьте новый столбец для названия округа в качестве столбца A
, Образец показан ниже.
Имена, используемые в этом столбце, должны точно соответствовать именам, используемым в первом столбце Sheet2
, но можно использовать в любом порядке. Формулы Sheet1
необходимо скорректировать с учетом изменений на обоих листах, а также ссылаться на названия округов.
Формула для ячейки C2 имеет вид =LEFT(B2,2)
,
Формула для ячейки D2 имеет вид =MID(B2,3,1)
,
Формула для ячейки E2 имеет вид =MID(B2,4,2)
,
Формула для ячейки F2 имеет вид
`=VLOOKUP(VALUE(C2),INDIRECT("Sheet2!"&VLOOKUP(A2,Sheet2!$A$2:$B$100,2)),2)`.
Формула для ячейки G2 имеет вид
`=VLOOKUP(VALUE(C2),INDIRECT("Sheet2!"&VLOOKUP(A2,Sheet2!$A$2:$B$100,2)),3)`.
В клетках F2
а также G2
формула включает в себя диапазон Sheet2!$A$2:$B$100
где 100
это просто число, выбранное, чтобы учесть много округов (на самом деле 99). Если в вашем штате 120 округов, и вам необходимо охватить все из них, измените 100
в 121
, например.
"Магия" происходит в последних двух ячейках, используя две функции, VLOOKUP
а также INDIRECT
, Внутренний VLOOKUP
использует название округа в Sheet1
колонка A
найти диапазон для использования в Sheet2
, Это объединено с другими частями строки, чтобы создать полную ссылку на таблицу в Sheet2
, INDIRECT
функция берет эту строку и превращает ее в ссылку, что внешний VLOOKUP
можешь использовать.
Вы можете использовать отдельные листы для покрытия разных состояний, если хотите. Чтобы заставить эту работу изменить Sheet2
ссылки в ячейке F2
а также G2
в Sheet3
или как там будет новое имя листа. Вы также можете переименовать листы, даже если их всего 2, во что-то, что работает лучше. Опять же, вам нужно изменить Sheet2
ссылки на новое имя. (Всего 4 замены на строку, по две в каждой F
а также G
.) Если два штата имеют одно и то же название округа, это не имеет значения, так как имя будет найдено в списке на листе этого штата и будет ссылаться на его собственную таблицу, а не на округ с одноименным названием в другом штате.
Первоначально я забыл упомянуть, что форматирование ячеек в Sheet1
поскольку PID должен быть установлен в текст, в противном случае он будет пониматься как числа, и Excel будет сбрасывать начальные нули, а функции манипулирования строками в следующих 3 столбцах будут сбоить, что приведет к сбою или даже ошибкам в последние две колонки.
Дополнительное примечание для людей, использующих Linux, !
в листе ссылок VLOOKUP
должен быть изменен на период, .
, чтобы заставить его работать в LibreOffice Calc, но все остальное остается как есть.