IF, LEFT, INDIRECT Функция Excel для диапазона PLSS

590
Chris Swanson

Я специалист по ГИС для кадастровой картографической компании.

Я использую 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
Лист 2, столбец A, ряд 1-9: 011 012 013 014 015 016 017 018 019 Chris Swanson 7 лет назад 0
Shee2, столбец B, строка 1-9: 021 022 023 024 025 026 027 028 029 Chris Swanson 7 лет назад 0
Идет в столбец Т аналогичным образом. Chris Swanson 7 лет назад 0
Я только что нашел, как создать заголовок таблицы. Похоже, вместо ссылки на диапазон из Sheet2, я могу просто ссылаться на имя столбца? Chris Swanson 7 лет назад 0
Тогда почему бы просто: `= TEXT (LEFT (B2,2) +4," 00 ")` это должно дать вам Scott Craner 7 лет назад 0
Я не следую. , , Chris Swanson 7 лет назад 0
Я вижу сейчас. Просто возьмите первые два символа и отнесите городок PLSS к поселку Survey. Chris Swanson 7 лет назад 0
Это не сработало. Я все еще пытаюсь понять это. Я хочу, чтобы формула читалась - если осталось 2 символа в ячейке A = Y, то вставьте Z в ячейку B Chris Swanson 7 лет назад 0
Очень сложно следить за вашей дискуссией. Пожалуйста, закрепите свой вопрос и добавьте всю новую информацию из комментариев. Máté Juhász 7 лет назад 0
(1) Вы явно не эксперт в Excel. Очень немногие из нас являются опытными картографами. Я не знаю, что такое PLSS, я не понимаю, что вы подразумеваете под «диапазоном», и мне все равно. Можете ли вы объяснить свою проблему как проблему манипуляции со строками, которая не имеет ничего общего с картами? (2) Если вы не хотите, чтобы мы были сбиты с толку, не путайте. (2a) Вы говорите, что первые три цифры PID - это номер исследуемого населенного пункта, но затем вы говорите, что первые две цифры - это номер исследуемого населенного пункта, а третья цифра - номер листа карты. … (Продолжение) Scott 7 лет назад 0
(Продолжение)… (2b) Вы говорите о разделах, но не описываете, как они относятся к вопросу. (2c) Вы говорите, что хотите поселок 04 и диапазон 06, но затем говорите, что хотите 04S. Какие отношения? (3) Что это за формула, которую вы показываете, даже пытаясь сделать? Имеет две функции `IF` ***, разделенные запятой ***. Какие? (4) Вы должны дать нам больше, чтобы продолжить. Вы говорите, что создали список ссылок в Sheet2, в котором перечислены все листы карты в округе, но что он перечисляет? От PID 0241800000001000, где мы должны получить поселок 04 и диапазон 06, или ячейку поселка 04S? Scott 7 лет назад 0
@GypsySpellweaver не тот человек. Я поставил не вопрос, а комментарий. Ваши комментарии для ОП, а не для меня. Scott Craner 7 лет назад 0
Ой, извините. @ChrisSwanson Как вы можете заметить по комментариям здесь, данные сбивают с толку тех, кто не знаком с предметами, поэтому помогите нам помочь вам. 1: Каждый исследуемый населенный пункт находится в пределах одного населенного пункта PLS, поэтому имеет ли значение даже лист карты (т.е. зачем проверять 021-029, когда имеет значение только «02»)? 2: Формируют ли листы карты населенного пункта квадрат? 3: Следуют ли населенные пункты в целом по стандартной схеме, такой как номера секций или номера R / T или PLSS? 4: Каков размер населенного пункта PLSS по сравнению с поселком PLSS? (9 секций, 1 секция, квартальная секция, квартальная квартальная секция и т. Д.)? Gypsy Spellweaver 7 лет назад 0

2 ответа на вопрос

1
reasra

Помимо получения награды за «Наиболее запутанную формулировку проблемы» (пожалуйста, прочтите комментарии @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). Но опять же, у меня не было примера таблицы. Хотел бы помочь больше, но нам нужно больше информации.

@ChrisSwanson Нет проблем. Я вижу, это ваш первый вопрос здесь. Мы все были там. В следующий раз сосредоточьтесь на чем-то более общем, чтобы мы могли легче помочь. Если это ошибка с кодом / формулой, сделайте ее воспроизводимой с нашей стороны. Скриншоты очень легко встраивать в вопрос сейчас. reasra 7 лет назад 1
1
Gypsy Spellweaver

Прочитав описание снова, ища ответы на мои предыдущие вопросы, я пришел к выводу, что каждый исследуемый населенный пункт не только попадает в сетку одного населенного пункта и площади в PLSS, но и соответствует ей, за исключением номенклатуры. Таким образом, все 9 листов обзорного городка 02 соответствуют старым 9 листам Township 04S Range 06W (или 06E). Поскольку вы сказали, что в текущем округе насчитывается 20 населенных пунктов, я создал гипотетическую «карту» страны, на которой показано наложение 20 населенных пунктов на сетку PLSS. (Так как у вас есть карты и вы знаете область, вы можете настроить мой пример в соответствии с вашими требованиями.) Я сделал эту гипотетическую карту пересеченной как по базовой линии, так и по меридиану, чтобы вы могли увидеть ее применение в этой ситуации.

Это «карта», которую я использовал для примера.

Преобразование этой карты в данные для вашего Sheet2 создает следующий лист:

Используя ваши образцы данных для PID 0241800000001000, я создал это как Лист1:

Формула для ячейки 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в столбце ASheet2 и вернуть значение 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 должно быть установлено как текст, иначе это будут цифры, и в следующих 3-х Excel будут отбрасываться начальные нули и функции манипуляции со строками. столбцы потерпят неудачу, что приводит к сбоям или даже ошибкам в последних двух столбцах.

Дополнительное примечание для людей, использующих Linux, !в листе «Ссылки» VLOOKUPнеобходимо изменить на точку ., чтобы она работала в LibreOffice Calc, но остальная часть остается неизменной .

Это именно то, что я пытался сделать. Итак, позвольте мне усложнить это дальше. Лол. Что если я захочу добавить поле "графство", которое будет ссылаться на лист поиска для отдельного округа? Используя приведенный выше пример, скажем, что PID 0241800000001000 находится в округе A, а 2093500200010000 в округе B. И предположим, у меня уже есть уникальный лист поиска для каждого округа в моем штате. Chris Swanson 7 лет назад 0
Нет необходимости использовать отдельные листы. Смотрите мое редактирование к ответу. Gypsy Spellweaver 7 лет назад 0