Копирование последней буквы

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Воронин С.В.
Завсегдатай
Сообщения: 431
Зарегистрирован: 06 ноя 2009, 13:18
Репутация: 10
Откуда: Екатеринбург

Копирование последней буквы

Сообщение Воронин С.В. »

Господа, владеющие VBA!
Необходимо из одного поля (поле SOIL) перебосить в другое поле (поле GRANULE) последнюю букву.
Делать это вручную сложно.
Подскажите формулу с использованием калькулятора поля.
Вложения
Таблица атрибутов.JPG
Таблица атрибутов.JPG (78.04 КБ) 7328 просмотров
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Копирование последней буквы

Сообщение Slinger »

Обновите колонку данным выражением:

Код: Выделить всё

Right ( [SOIL], 1 )
Разумеется сначала необходимо кликнуть на нужной колонке правой кнопкой и выбрать "калькулятор поля"
Воронин С.В.
Завсегдатай
Сообщения: 431
Зарегистрирован: 06 ноя 2009, 13:18
Репутация: 10
Откуда: Екатеринбург

Re: Копирование последней буквы

Сообщение Воронин С.В. »

Slinger'у.

Огромное спасибо!
Все получилось. Вы мне сэкономили, минимум, неделю работы.

Могу ли я попросить и об обратной задаче.
Удалить последнюю букву в поле SOIL с пробелом, если он есть; и если пробела нет, то только последнюю букву.
Вся соль в том, что иногда пробел не ставится, а как в дальнейшем скажется наличие пробела в конце значения, не могу представить.
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Копирование последней буквы

Сообщение Slinger »

Хм, я к сожалению не знаю хотя бы приблизительных забитых значений в после SOIL. Если там всегда стоит 4 символа (2 буквы, затем пробел, затем ещё одна буква), то подойдёт

Код: Выделить всё

Left ([SOIL], 2)
Функция вернёт Вам два первых символа строки. В ином случае придётся либо частично воспользоваться функциями Mid() , либо Replace()
Воронин С.В.
Завсегдатай
Сообщения: 431
Зарегистрирован: 06 ноя 2009, 13:18
Репутация: 10
Откуда: Екатеринбург

Re: Копирование последней буквы

Сообщение Воронин С.В. »

Slinger'у.

Поле SOIL имеет текстовой формат, 8 знаков.
Если я Вас правильно понял, то использую Left ([SOIL], 7) ?
Честно говоря, очень напоминает Exell.
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Копирование последней буквы

Сообщение Slinger »

Да нет, тип поля не имеет значения. Я спрашиваю, что вообще за семантика забита в поле SOIL. Судя по Вашему примеру, я вижу строчку "Дк в", следующие - "Дк т". И те и другие занимают 4 символа (2 буквы, пробел и ещё одна буква). Вот поэтому и говорю. Если везде стоит 4 подобных символа, то имеет смысл обновить колонку SOIL выражением

Код: Выделить всё

Left ([SOIL], 2)
Она возьмёт первые два символа (в нашем случае "Дк") и отрежет всё остальное. Если символов больше, например, "Дкр п", то опять же, останется только "Дк", а не "Дкр". Собственно, это меня и интересовало
Воронин С.В.
Завсегдатай
Сообщения: 431
Зарегистрирован: 06 ноя 2009, 13:18
Репутация: 10
Откуда: Екатеринбург

Re: Копирование последней буквы

Сообщение Воронин С.В. »

Slinger'у.
Вся соль, что количество текстовых знаков разное, может встречаться и такое - ОРБн гт.
Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

Re: Копирование последней буквы

Сообщение Slinger »

Ммм, в этом случае Вы противоречите себе. То есть несколькими сообщениями выше Вы говорили о том, что последняя буква только одна (а перед ней соответственно пробел). В данном случае ( "ОРБн гт" ) этих букв две... Поэтому тут явно не получится применить сразу ко всем значениям. Вернее, разумеется, получится, но в некоторых строчках, подобно этой, ожидаемый результат мы не получим

что-то я сам код забыл написать =)

Для того, чтобы получить ту же самую строку без последней буквы, необходимо обновить колонку SOIL выражением:

Код: Выделить всё

Left ([SOIL], Len ( [SOIL] ) - 1 )
После чего на конце каждой строки останется только пробел, который можно убрать, обновив ту же самую колонку выражением:

Код: Выделить всё

RTrim ( [SOIL] )
Воронин С.В.
Завсегдатай
Сообщения: 431
Зарегистрирован: 06 ноя 2009, 13:18
Репутация: 10
Откуда: Екатеринбург

Re: Копирование последней буквы

Сообщение Воронин С.В. »

Slinger'у.

Огромное спасибо!
Все получается, пусть и не за один проход, это уже не суть важно.
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость