Страница 1 из 1

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

Добавлено: 14 мар 2011, 14:37
Воронин С.В.
Господа, владеющие VBA!
Необходимо из одного поля (поле SOIL) перебосить в другое поле (поле GRANULE) последнюю букву.
Делать это вручную сложно.
Подскажите формулу с использованием калькулятора поля.

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

Добавлено: 14 мар 2011, 19:21
Slinger
Обновите колонку данным выражением:

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

Right ( [SOIL], 1 )
Разумеется сначала необходимо кликнуть на нужной колонке правой кнопкой и выбрать "калькулятор поля"

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

Добавлено: 15 мар 2011, 05:38
Воронин С.В.
Slinger'у.

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

Могу ли я попросить и об обратной задаче.
Удалить последнюю букву в поле SOIL с пробелом, если он есть; и если пробела нет, то только последнюю букву.
Вся соль в том, что иногда пробел не ставится, а как в дальнейшем скажется наличие пробела в конце значения, не могу представить.

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

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

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

Left ([SOIL], 2)
Функция вернёт Вам два первых символа строки. В ином случае придётся либо частично воспользоваться функциями Mid() , либо Replace()

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

Добавлено: 18 мар 2011, 07:20
Воронин С.В.
Slinger'у.

Поле SOIL имеет текстовой формат, 8 знаков.
Если я Вас правильно понял, то использую Left ([SOIL], 7) ?
Честно говоря, очень напоминает Exell.

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

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

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

Left ([SOIL], 2)
Она возьмёт первые два символа (в нашем случае "Дк") и отрежет всё остальное. Если символов больше, например, "Дкр п", то опять же, останется только "Дк", а не "Дкр". Собственно, это меня и интересовало

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

Добавлено: 21 мар 2011, 05:37
Воронин С.В.
Slinger'у.
Вся соль, что количество текстовых знаков разное, может встречаться и такое - ОРБн гт.

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

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

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

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

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

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

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

RTrim ( [SOIL] )

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

Добавлено: 23 мар 2011, 05:24
Воронин С.В.
Slinger'у.

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