Я хотел бы автоматически заполнить (если возможно - с удовольствием сделаю по-другому) строку, имеющую шаблон, показанный здесь: I1A, I1B, I2A, I2B, I3A, I3B,… В более информативных терминах, первый символ - это буква I второй символ содержит числа, начинающиеся с 1, но каждый повторяется дважды, а третий символ чередуется между буквой А и буквой В. Я понятия не имею, как это сделать, поэтому я ищу помощи. Спасибо!
3 ответа
Этот метод работает для множества проблем.
Мы собираемся взять каждую из трех позиций символов в виде столбца, а затем объединить все из них в четвертый столбец - одно поле.
Первый столбец [= "l"] или любой постоянный символ
- Просто вставьте пару "l" символов в последовательных рядах.
- Выберите два или более и перетащите вниз на маркер заполнения (квадратная точка в правом нижнем углу поля выбора)
Второй столбец [= 1,1,2,2,3,3, ...]
- Удалить числовой 1 в каждой из первых двух строк данных
- третья строка, установите формулу равной ПЕРВОЙ строке плюс один
- четвертый ряд, установить формулу, равную ВТОРОЙ строке
- Выберите ТОЛЬКО третью и четвертую строку и перетащите маркер заполнения вниз.
Третий столбец [= A, B, A, B ...]
- Введите A и B в первую и вторую строки данных, а затем снова в третью и четвертую строки данных
- Выберите все четыре и перетащите ручку заполнения вниз.
Четвертый столбец [I1A, I1B, I2A, I2B, I3A, I3B ...]
- объединить остальные три столбца
- перетащите заполнить вниз.
Есть и другие способы сделать это, но это можно использовать как чертовски многозначно, и это соответствует уровню проблемы.
Преимущества:
- Как только вы отсортируете несколько строк, вы можете просто перетащить заполнить это до конца света. Фактически, вы можете поиграть с перетаскиванием всех четырех столбцов одновременно, но вам нужно будет найти правильную "высоту" выделения, чтобы начать перетаскивание (вероятно, с четырех), и правую стартовую строку.
- Эти простые формулы позволяют легко понять, что происходит, и изменять по мере необходимости для новых задач.
- Этот метод живет в вашей голове, а не в определенном списке где-то.
Недостатки:
- Занимает несколько столбцов, которые могут потребовать промежуточную версию вашего листа, если вещь там упакована.
Во-первых, поставьте только 1, оставьте пустую ячейку под ней, 2, оставьте пустую клетку под ней, вот так
Теперь выберите эти 4 ячейки и копируйте их так долго, как хотите, чтобы ваши числа были сгенерированы.
Это даст вам 1, 2, 3, 4 ... с пробелом в 1 пустую ячейку между
Во-вторых, в столбце рядом с 1 введите = "I" & A1 & "A", где A1 - это ячейка, имеющая 1.
в строке ниже, где вы ввели формулу выше, введите = "I" & A1 & "B",
по сути, это будет в ячейке рядом с пустой ячейкой ниже 1
Ячейка B1 теперь будет иметь I1A (первая формула выше). Ячейка B2 теперь будет иметь I1B (вторая формула выше), вот так
Выберите B1:B2, скопируйте вниз до места, где вы заполнили 1,2,3, ... в первом шаге
Ваш столбец B будет иметь ваш список.
Вот несколько способов. Вопрос не ясен относительно того, реплицируете ли вы формулу по столбцам одной строки или вниз по строкам одного столбца. Я покажу это для обоих.
Альтернатива 1
Этот подход рассматривает предыдущие ячейки, чтобы выяснить, что нужно. Поскольку шаблон основан на двух ячейках, необходимо ввести первые две (I1A
и I1B
). Введите эту формулу в следующую ячейку.
Если перейти: если первые две ячейки - это A1 и B1, то это будет в C1:
="I" & IF(MID(A1,2,1)=MID(B1,2,1),1,0) + MID(B1,2,1) & RIGHT(A1,1)
Если идти вниз: если первые две ячейки - А1 и А2, то это будет A3:
="I" & IF(MID(A1,2,1)=MID(A2,2,1),1,0) + MID(A2,2,1) & RIGHT(A1,1)
При этом используются строковые функции для извлечения символов, которые изменяют, корректируют их и соединяют части обратно (амперсанды объединяют части). Первый символ является постоянным.
Для второго символа он проверяет, было ли число (средний символ) одинаковым для двух предыдущих ячеек. Если так, пришло время добавить 1
. В противном случае это остается прежним.
Поскольку последний символ повторяет все остальные ячейки, он просто использует значение из двух ячеек ранее.
Как только вы получите формулу в третьей ячейке, вы можете скопировать ее так, как вам нужно. Способ 1 не волнует, где на листе вы положили его.
Альтернатива 2
Этот подход использует некоторые арифметические приемы, чтобы выяснить, что происходит в каждой ячейке.
Число в середине увеличивается на 1
для каждых двух столбцов (или строк). Функция COLUMN дает вам номер столбца (A = 1, B = 2 и т.д.). Функция Row делает то же самое для номера строки. Если вы начинаете со столбца A (или строки 1), у вас уже есть правильный начальный номер. Если этот шаблон начинается в более позднем столбце (или строке), вам нужно будет вычесть на 1 меньше, чем номер столбца (или строки), чтобы получить начальное значение 1. Деление на 2 и округление повторяет значение для двух столбцов (или строк), затем увеличивается.
Если перейти: если вы начинаете в столбце A, эта часть формулы будет иметь вид:
ROUND(COLUMN()/2,0)
Если вы начнете, скажем, в столбце C (3-й столбец), формула будет выглядеть так:
ROUND((COLUMN()-2)/2,0)
Если идти вниз: если вы начнете со строки 1, эта часть формулы будет иметь вид:
ROUND(ROW()/2,0)
Если вы начнете, скажем, в строке 3, формула будет:
ROUND((ROW()-2)/2,0)
Я покажу простые версии во всей формуле ниже; просто замените скорректированную версию, если вы начинаете в другом столбце (или строке).
Буква в конце чередуется, поэтому вы можете основывать ее на нечетных и четных числах столбцов (или строк).
Если перейти: если вы начинаете с нечетного столбца, этот кусок будет:
IF(MOD(COLUMN(),2)=0,"B","A")
Если начальный номер столбца четный, это будет:
IF(MOD(COLUMN(),2)=0,"A","B")
Если идти вниз: если вы начинаете в нечетном ряду, этот кусок будет:
IF(MOD(ROW(),2)=0,"B","A")
Если начальный номер строки четный, это будет:
IF(MOD(ROW(),2)=0,"A","B")
Функция MOD дает вам остаток после деления номера столбца (или строки) на 2
. Номер столбца (или строки), который является четным, будет иметь остаток 0
, нечетный 1
. Таким образом, вы выбираете последовательность "A" и "B" на основе этого. Для сводного примера ниже я покажу нечетную версию.
Соединение это дает вам:
Если перейти через:
="I" & ROUND(COLUMN()/2,0) & IF(MOD(COLUMN(),2)=0,"B","A")
Если идти вниз:
="I" & ROUND(ROW()/2,0) & IF(MOD(ROW(),2)=0,"B","A")
Введите подходящую версию для первой ячейки, затем скопируйте ее поперек или вниз для столько ячеек, сколько вам нужно.