Я хотел бы повторить формулу для x-раз в зависимости от числа, показанного в другой ячейке. Для меня это число - длина данного текста.

То, что я пытаюсь сделать, это добавить символ (ы) до и после каждого данного символа, чтобы иметь новый текст в новой ячейке.

Основная часть оригинальной формулы - которую я хочу сократить, потому что оригинальный текст теперь имеет длину ~ 100 символов; поэтому мне пришлось бы повторить эту основную часть формулы 100 раз - выглядит так:

=$T$10&MID(K21;1;1)&$T$11&MID(K21;2;1)&$T$12

Теперь в другой ячейке у меня есть номер 33 (длина исходного текста). Теперь часть

$T$11&MID(K21;2;1)

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

=$T$10&MID(K21;1;1)&$T$11&MID(K21;2;1)&$T$11&MID(K21;3;1)&$T$11&MID(K21;4;1)&$T$11&MID(K21;5;1)&$T$11&MID(K21;6;1)&$T$11&MID(K21;7;1)&$T$11&MID(K21;8;1)&$T$11&MID(K21;9;1)&$T$11&MID(K21;10;1)&$T$11&MID(K21;11;1)&$T$11&MID(K21;12;1)&$T$11&MID(K21;13;1)&$T$11&MID(K21;14;1)&$T$11&MID(K21;15;1)&$T$11&MID(K21;16;1)&$T$11&MID(K21;17;1)&$T$11&MID(K21;18;1)&$T$11&MID(K21;19;1)&$T$11&MID(K21;20;1)&$T$11&MID(K21;21;1)&$T$11&MID(K21;22;1)&$T$11&MID(K21;23;1)&$T$11&MID(K21;24;1)&$T$11&MID(K21;25;1)&$T$11&MID(K21;26;1)&$T$11&MID(K21;27;1)&$T$11&MID(K21;28;1)&$T$11&MID(K21;29;1)&$T$11&MID(K21;30;1)&$T$11&MID(K21;31;1)&$T$11&MID(K21;32;1)&$T$11&MID(K21;33;1)&$T$12

Есть ли возможность динамически генерировать эту формулу по числу, указанному в другой ячейке?

По нескольким причинам в рабочем процессе я не хочу использовать здесь макрос VBA.

1 ответ1

1

Я бы сказал, что нашел решение своей проблемы. Я использую Excel 2013, и это мое решение:

  1. Активируйте итерации в Excel с X (например, 150) итерациями: перейдите в «Файл» -> «Параметры» -> «Формула» и активируйте итерации
  2. Это данный текст:

    B2=P50,R50,P1,R1,P27,R27,

  3. Это формула итерации:

Немецкий B3=WENN(B3<150;B3+1;1)

Английский B3=IF(B3<150,B3+1,1)

Активируйте эту ячейку и нажмите Enter, чтобы убедиться, что результат итерации равен X = 150 или 1. Другие результаты могут возникнуть, если несколько пересчетов произошли вскоре после друг друга. Таким образом, один итерационный процесс был прерван со следующим.

  1. Это итерационная формула минус 3:

    B4=B3-3

  2. Это символы, которые вставляются перед каждым символом данного текста:

    B5=C

  3. Это символы, которые вставляются после каждого символа данного текста:

    B6=,

  4. Это формула для символов до и после каждого из исходных символов:

Немецкий B7==WENN($B$4<0;B7;WENN($B$4=0;"";WENN(LÄNGE(B7)<(LÄNGE(B2))*(LÄNGE(B5)+LÄNGE(B6)+1);VERKETTEN(B7;$B$5;TEIL(B2;$B$4;1);$B$6);B7)))

Английский B7==IF($B$4<0,B7,IF($B$4=0,"",IF(LEN(B7)<(LEN(B2))*(LEN(B5)+LEN(B6)+1),CONCATENATE(B7,$B$5,MID(B2,$B$4,1),$B$6),B7)))

  1. Просто убедитесь, что полученная формула итерации находится в X = 150 или 1 после процесса итерации. Это можно сделать, щелкнув мышью в ячейке формулы итерации, при этом курсор будет виден за формулой, а затем нажмите клавишу ввода.

  2. Это оригинал и полученный текст:

    P50,R50,P1,R1,P27,R27,

    CP,C5,C0,C,,CR,C5,C0,C,,CP,C1,C,,CR,C1,C,,CP,C2,C7,C,,CR,C2,C7,C,,

Если вам это нравится или это ново для вас, пожалуйста, проголосуйте за ответ. Спасибо.

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