Excel "положить случайное значение в ячейку и запустить перестановку" самая простая проблема - PullRequest
1 голос
/ 19 апреля 2020

У меня легкая проблема. Любой любезно помочь.

У меня есть имя (имена) в Excel. Я хотел бы заполнить случайной полной остановкой между именами

Например,

   A.    B. 
 1 Name  n.ame
 2       n.a.me
 3.      n.a.m.e
 4.      na.me

Et c all возможные имена, которые будут перечислены. Я так ужасен в Excel, но я определенно возвращаюсь к основам.

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Произвольно вставить символ в строку

Помните, что это генератор псевдослучайных чисел. Попробуйте это для строки в A1:

=REPLACE(A1,RANDBETWEEN(1,LEN(A1)+1),0,".")

Дополнительно вы можете улучшить:

=IF(A1="","",REPLACE(A1,RANDBETWEEN(1,LEN(A1)+1),0,"."))

или даже:

=IF(NOT(ISTEXT(A1)),"",REPLACE(A1,RANDBETWEEN(1,LEN(A1)+1),0,"."))
1 голос
/ 19 апреля 2020

Если бы у вас был Excel 2019, вы могли бы использовать textjoin и сделать что-то вроде этого:

=IFERROR(TEXTJOIN("",1,IF(ISODD(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))),MID($A$1,(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))+1)/2,1),
IF(MID(DEC2BIN(ROW(),LEN($A$1)-1),ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))/2,1)="1",".",""))),"")

, введенный как формула массива, используя Ctrl Shift Введите

enter image description here

enter image description here

Я предлагаю вам найти один из доступны реализации textjoin или concat для более ранних версий Excel, например здесь . Приведенную выше формулу можно изменить, чтобы использовать ее вместо этого:

=IFERROR(cat(IF(ISODD(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))),MID($A$1,(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))+1)/2,1),IF(MID(DEC2BIN(ROW(),LEN($A$1)-1),ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))/2,1)="1",".","")),"",1),"")

РЕДАКТИРОВАТЬ

В свете полезного комментария @John Coleman, улучшенная версия первой формулы выше будет использовать Base (число, 2, min_length) вместо dec2bin, который может обрабатывать только значения до 511 или 2 ^ 9-1 (с максимальным значением 10 символов в имени):

=IF(ROW()<2^(LEN($A$1)-1),TEXTJOIN("",1,IF(ISODD(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))),MID($A$1,(ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))+1)/2,1),
IF(MID(BASE(ROW(),2,LEN($A$1)-1),ROW($A$1:INDEX(A:A,LEN($A$1)*2-1))/2,1)="1",".",""))),"")
...