1

Столбец 1 содержит значения, подобные следующим:

AAA
AAB
AABAAA
AABAAB
AABAAC
AABAACAAA

Колонка 2 содержит цифры, такие как 1, 2, 3, 4, 5, 6

Мне нужно изменить последние 3 символа в столбце 1 на основе значения в столбце 2

Правило: 1 = AAA, 2 = AAB, 3 = AAC, 4 = AAD и т.д. .....

Например: если столбец 1 содержит AABAAC, а значение в столбце 2 равно 1, мне нужно изменить последние 3 символа в столбце 1 на AAA. Результатом для столбца 1 будет AABAAA

2 ответа2

0

Что вы подразумеваете под «изменением»?  Достаточно ли хорошо, чтобы создать новый столбец, содержащий манипулируемые значения?  Если это так, настройте таблицу поиска, как описано в TheCompWiz, установите для C1 значение

=LEFT(A1, LEN(A1)-3)  &  VLOOKUP(B1, Sheet2!A$1:B$9999, 2)

и перетащите / заполните.  LEFT( X , LEN( X ) - 3) - это все X кроме 3 крайних правых символов, и & - это конкатенация строк.


Вопрос говорит,

Правило: 1 = AAA, 2 = AAB, 3 = AAC, 4 = AAD и т.д.

Это похоже на обозначение base-26.  Я думаю, 26 = AAZ, 27 = ABA, 260 = AJZ, 261 = AKA, 676 (26 × 26) = AZZ, 677 = BAA и т.д. По совпадению, это очень похоже на то, как Excel помечает столбцы.  Если у вас достаточно актуальная версия Excel (2007?  2010?) Вы можете получить это с формулой

LEFT(ADDRESS(1, 26*26 + 26 + n , 4), 3)

где ADDRESS - это функция для преобразования координат в адрес ячейки.  Например, ADDRESS(4, 2, …) возвращает B4 , а ADDRESS(4, 27, …) возвращает AA4 .  Третий параметр указывает, использовать ли абсолютную или относительную адресацию; 4 означает, что строка и столбец являются относительными.  Таким образом, ADDRESS(1, 26*26 + 26 + 1, 4) - это AAA1 , а LEFT( string , 3) возвращает первые (самые левые) три символа string .  Очевидно, вы бы подключить B1 для n .

PS Вам нужна текущая версия Excel, потому что в Excel 2003 и более ранних версиях (и я не уверен насчет 2007 года) рабочий лист может содержать не более 256 столбцов, и функция ADDRESS не оставляет вас генерирующим имя ячейки, которая не может существовать (то есть тот, для которого номер столбца> 256).

0

Есть несколько способов сделать это ... но я бы порекомендовал где-нибудь иметь справочную таблицу на тот случай, если вам нужно изменить значения, которым соответствуют числа:

В вашем столбце 1 значение должно быть примерно таким:

="AAA AAB AABAAA AABAAB AABAAC AABAAC" & LOOKUP(B1,Sheet2!A$1:A$9999,Sheet2!B$1:B$9999)

На листе 2 вы создаете что-то, что формула будет выглядеть следующим образом:

Скриншот Excel

... и т. д., пока вы не наберете столько значений, сколько захотите.

Я думаю, что это самый простой метод ... но некоторые альтернативные методы могут включать в себя использование функции CHAR(), которая может принимать числовое значение, добавлять 40 и получать символ, начинающийся с AZ ... при условии, что вы используете числовые значения 1- 26 ... Или вы можете пойти по более экстремальному маршруту и создать функцию в VBA, которая будет отображаться так, как вы считаете нужным. Последний метод, вероятно, не лучшая идея, так как вам придется перепрыгнуть через несколько обручей, чтобы он заработал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .