#excel
#excel
Вопрос:
Я пытаюсь создать список = 5 буквенно-цифровых символов.
Они не могут содержать 1
, i
и не может быть дубликатов при перетаскивании / копировании кода вниз.
Разрешенные символы:
023456789ABCDEFGHJKLMNOPQRSTUWVXYZ
(Заглавный)
Я перепробовал множество вариантов, но, похоже, не могу разобраться в этом.
Приветствия
Комментарии:
1. дубликаты? Означает ли это, что нельзя использовать один и тот же символ или комбинацию из 5 символов нельзя дублировать?
2. Какой наиболее перспективный из вариантов, которые вы пробовали? Вы ожидаете, что они будут выглядеть случайным образом?
3. Создайте именованную формулу в диспетчере имен ->
Pallette: ="023456789ABCDEFGHJKLMNOPQRSTUWVXYZ"
Затем используйте эту формулу для случайных кодов:=MID(Pallette,RANDBETWEEN(1,34),1) amp; MID(Pallette,RANDBETWEEN(1,34),1) amp; MID(Pallette,RANDBETWEEN(1,34),1) amp; MID(Pallette,RANDBETWEEN(1,34),1) amp; MID(Pallette,RANDBETWEEN(1,34),1)
это даст вам рандомизированные коды, но нет гарантии, что они будут уникальными (но дубликаты будут редкими).4. нет, я имею в виду, действителен ли A1111?
5. если у вас есть office 365:
=CONCAT(MID("023456789ABCDEFGHJKLMNOPQRSTUWVXYZ",RANDARRAY(5,,1,34,TRUE),1))
но, как указано выше, это не гарантирует уникальность, но существует 45 435 424 уникальных комбинации, и вероятность дублирования невелика.
Ответ №1:
Если ваша допустимая символьная строка находится в ячейке A1
, то следующая формула приведет к случайным кодам, длина каждого из которых составляет пять символов:
=MID(A1,RANDBETWEEN(1,34),1) amp; MID(A1,RANDBETWEEN(1,34),1) amp; MID(A1,RANDBETWEEN(1,34),1) amp; MID(A1,RANDBETWEEN(1,34),1) amp; MID(A1,RANDBETWEEN(1,34),1)
Но обратите внимание, что нет гарантии, что коды будут уникальными.
Как указал @ScottCraner … если у вас есть Office 365, вы можете использовать эту гораздо более короткую формулу, которая использует две новые функции, доступные только в Excel 365:
=CONCAT(MID(A1,RANDARRAY(5,,1,34,TRUE),1))
Но опять же, нет никакой гарантии, что результирующие коды будут уникальными.
Ответ №2:
Эта формула сгенерирует коды по порядку
=SUBSTITUTE(SUBSTITUTE(BASE(K, 34,5),"1","Z"),"I","Y")
Здесь K
может быть 0, 1, 2, ...
. Один из способов сгенерировать первые ~ 1 048 576 K — это использовать ROW()-1
. Вы могли бы получить более высокие значения K, используя что-то вроде K = 1048576*(COLUMN()-1) ROW()-1
.
Формула работает следующим образом
(a) вызов BASE(K, 34, 5)
для получения представления K длиной в 5 символов с базой 34
(b) замена Z
на 1
since 1
не является допустимым символом
(c) замена Y
на I
since I
не является допустимым символом
Комментарии:
1. А как насчет символа
i
?2. @excel hero Я не заметил, что
i
это незаконно. Я это исправлю.3. Обратите внимание, это сгенерирует только первые 1 048 576 комбинаций, оставляя более 44 000 000.
4. @ScottCraner я не согласен. Вы можете использовать любое значение
K
до34^5 - 1
. ИспользованиеROW()-1
— это один из вариантов, и вы правы, что для этого варианта вы получаете только первые ~ 1 048 576 комбинаций. Кроме того, это решение может гарантированно генерировать уникальные коды.5. Я согласен, но затем вы возвращаетесь к использованию генератора случайных чисел. Я бы сделал комментарий в ответе об ограничении использования строки, чтобы следующий пользователь не увидел это и не предположил, что список завершен.