2013-11-29 2 views
1

У меня есть таблица Excel с более чем 2000 записей:Как построить сложную ценность из трех переменных?

Field B1: CustomerID as 000
Field B2: CustomerID as 0000432 

Field C1: CustomerCountry as DE 
Field C2: CustomerCountry as IT 

Мне нужно построить коды длиной 13 цифр, включая «CustomerCountry» + «CustomerID» без лидирующего 0 + случайное число (может быть 6 цифр, более или меньше, зависит от длины CustomerID).

Результаты должны быть, как это: D1 Кодекса как DE12345967895 или D2 Кодекса как IT43274837401

Как сделать это с функциями Excel?

ОБНОВЛЕНО: Я попробовал этот. Моя большая проблема - сказать, что случайное число должно быть достаточно длинным, чтобы получить всего 13 символов. Иногда CustomerID составляет всего 3 или 4 цифры, а конкатенация трех переменных может быть всего 10 или 9 символов. Но коды должны быть всегда длиной 13 символов.

enter image description here

+0

Кажется, что вы удаляете все начальные нули, а не первые 0. Правильно ли это? – Bathsheba

+0

да, вы правы. Прости! –

+0

Могу ли я безопасно удалить все нули? т. е. существуют ли нули после первого ненулевого? – Bathsheba

ответ

4

Использование & для конкатенации строк.

Использование VALUE(CustomerID) для обрезки ведущих нулей от ID

RAND() использования, чтобы добавить случайное число между 0 и 1 или RANDBETWEEN(x,y), чтобы создать одну между х и у.

Комбинируйте вышеуказанное, и вы здесь!

Если вы всегда хотите 13 цифр, вы можете использовать LEFT(INT(RAND()*10^13);(13-LEN(CustomerCountry)-LEN(VALUE(CustomerID)))) для случайного числа, чтобы ВСЕГДА была правильной длины.

общая формула

= CustomerCountry 
    & VALUE(CustomerID) 
    & LEFT(INT(RAND()*10^13);(13-LEN(CustomerCountry)-LEN(VALUE(CustomerID)))) 
+0

Я был бы осторожен в части случайных чисел, поскольку он не гарантирует дубликатов. –

+1

Не было сказано, что следует избегать дубликатов, поэтому я не считаю это обязательным требованием –

+0

@mehow. Я не вижу в этом проблемы, так как вы надеетесь, что ненулевая часть идентификатора клиента уникальна. Но да, вы должны это разъяснить. И +1 для использования VALUE. – Bathsheba

2

=C1 & TEXT(B1,"0") & RIGHT(TEXT(RANDBETWEEN(0,99999999999),"00000000000"),11 - LEN(TEXT(B1,"0")))

, что нужно сделать, это

+0

Это не приведет к удалению ведущих нулей, а также не приведет к принудительной длине 13 символов. –

+0

hmm good point ... он фактически удаляет первый символ .. ли это ноль не ... из соответствующих тестовых данных с моей стороны :) – user2983931

+0

Мне нравятся формулы TEXT(), которые вы использовали, очень чистые. –

0

Я не понимаю, что, где и OP принял ответ, чтобы не беспокоили тестирования:

=LEFT(RIGHT(C1,2)&VALUE(MID(B1,15,13))&RANDBETWEEN(10^9,10^10),13) 

(но я мог бы вернуться к этому, если никто другой не заберет недостатки i n it first!)

Смежные вопросы