Таким образом, в Excel 2013 (v15.x) до сих пор не существует одношагового способа применения произвольной формулы ко всем выделенным ячейкам или я просто ее пропускаю? Самая близкая вещь, которую я вижу здесь в поиске, является ответом на этот вопрос:

Как применить функцию ко всем значениям в выбранных ячейках?

... в котором вы выбираете число в одной ячейке, затем вставляете специальное значение в новый диапазон ячеек, а в специальном вставке вы можете выбрать сложение, вычитание, умножение или деление.

Но часто мне нужна сложная формула, в которой единственной переменной может быть сама клетка. Одно из приложений - подготовить полученный лист для импорта в SQL или другой контекст.

Поэтому, чтобы изменить диапазон ячеек в столбце А (скажем, поменять местами первые / последние слова в каждой ячейке и заменить знаки препинания), я делаю все следующие шаги:

  1. Вставьте новый столбец B рядом с A. (Или работайте в существующей пустой области листа.)

  2. Положите мою формулу в B1, ссылаясь, например, на A1.

  3. Перетащите формулу как можно ниже в столбец B и убедитесь, что результаты соответствуют ожидаемым.

  4. Ctrl-C, чтобы выбрать уже выделенный диапазон в B.

  5. Щелкните правой кнопкой мыши первую ячейку соответствующего диапазона в A.

  6. Выберите «Специальная вставка»> «Значения» и проверьте результаты.

  7. Удалить столбец B (или любой другой промежуточный диапазон, который я использовал).

Теперь, конечно, число 7 обладает несколькими исторически почитаемыми магическими свойствами, но я продолжаю думать, что это не может быть правильным или самым простым способом в 2015 году, в ведущей на рынке электронной таблице, делать то, что мне нужно так часто. Не все ли? Я должен быть с видом на ярлык , который все знает , кроме меня.

Что если это просто простая встроенная функция, такая как UPPER()? Любой способ сделать это для выделения без создания промежуточной копии или макроса?

Если каким-то образом это не только я, предоставляют ли какие-либо альтернативы, такие как LibreCalc, прямой путь?

НА РЕДАКТИРОВАНИИ: Перечитывая мой вопрос после просмотра одного ответа, я подозреваю, что мне было недостаточно ясно, что цель применения формулы, например, для ячейки A14 (среди многих), состоит в том, чтобы вычислить новое значение для A14, полученное из исходного значения A14 и оставьте только значение (не формулу) в ячейке. Например, значение каждой ячейки может стать значением & "- obs", т. Е. ("ABC" становится "ABC-obs") или чем-то более сложным, чем это. Но я предполагаю, что суть проблемы заключается в обработке преднамеренной самоссылки на 1 итерацию, сохранении значения формулы, а не самой формулы.

1 ответ1

0

Если ячейки уже выбраны, просто нажмите CTRL + ENTER. Вы также можете перетащить квадрат в нижнем правом углу ячейки после того, как вы нажали ENTER, если вы забыли.

Также при указании ячейки. Если вы поместите $ перед столбцом, строка или столбец или строка останутся одинаковыми для всех элементов. Если нет, то эта строка или столбец будет относительно значения в текущей ячейке. Например, если у вас выбрано A1:C4 и вы вводите =D1 в формулу для A1 и нажимаете CTRL + ENTER, тогда значения в D1:F4 будут использоваться в соответствующих ячейках. Если вы используете =$D$1 то все ячейки будут использовать значение в D1 .

ОБНОВИТЬ

Единственный способ сделать то, что вы хотите без использования промежуточных значений, - это использовать VBA. Основная функция, которую вы хотите, проста. Это будет выглядеть примерно так:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Intersect(Target, Range("A1:C100")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Target = UCase(Target)
    Application.EnableEvents = True
End Sub

Просто замените строку Target = UCase(Target) тем, что вы хотите сделать.

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