Я заметил, что "EXEC MySproc," & "arg, " & "arg2"
по сути это то же самое, что в =CONCATENATE("EXEC MySproc,", "arg,", "arg2")
том числе возможность использовать оценки, функции etecetera. Какая польза от использования =CONCATENATE()
против &
?
microsoft-excel
Тейлор Экли
источник
источник
CONCATENATE()
и&
являются внутренне реализованы по- разному в Excel?Ответы:
Это для людей, которые любят печатать больше. Вероятно, та же аудитория, которая делает вещи,
=Sum((A1*A2)-A3)
а не=(A1*A2)-A3
. (Да, эти люди существуют, и я не знаю, почему они это делают)Он также предоставляет прекрасные возможности для создания самой первой пользовательской функции с помощью VBA для создания чего-то более полезного, чем Concatenate ().
В Excel 2016 (с подпиской на Office 365) есть новая функция TextJoin () , которая принимает в качестве аргументов разделитель и диапазон и намного быстрее, чем ввод амперсандов и разделителей в виде текстовых строк. Теперь это полезно.
источник
=Sum(A1,A2)
(в качестве альтернативы=A1+B1
)?=A1+A2
но по какой-то причине пишут=Sum(A1+A1)
. Или=Sum(A1-A2)
где они могли бы нас=A1-A2
. Или=Sum(A1*A2)
где они могли бы использовать=A1*A2
. Некоторые люди помещают всевозможные формулы в функцию Sum (), и я пытаюсь понять, почему.Вероятно, потому, что они используют кнопку Вставить функцию.
Я иногда делаю это, когда я ем левой рукой и просто делаю некоторые формулы низкого уровня, или когда я использую сенсорное устройство, и меня не беспокоит переключение между символами, буквами и цифрами на сенсорном экране ,
источник
.
для perl, pipe-pipe||
для SQL, без char для cmd и bash+
для Java. Мне действительно нужно&
только для Excel?.
,||
а+
затем вы можете вспомнить&
. Это проще, чемconcatenate
, ESP. если вы не очень хорошо владеете английским языком. Это также используется в VBAVERKETTEN
в немецком Excel)У него есть только исторические причины и причины совместимости. Предыдущие версии Excel не поддерживали один формат, а другие инструменты для работы с электронными таблицами (такие как Google Docs, Apple Numbers или Open Office) не поддерживали другой.
Выберите то, что вы предпочитаете.
Обратите внимание, что в зависимости от формата сохранения Excel требуется больше места для сохранения,
CONCATENATE()
чем&
.источник
&
была заменаCONCATENATE
до сих пор. Я редко использую Excel, но когда я делаю это, обычно для чего-то, что требует конкатенацииНа мой взгляд, выборочное использование конкатенации и амперсандов может привести к более четким формулам.
Это объединение деталей адреса, используя смесь из
CONCATENATE
и&
кажется мне яснее:Чем исключительное использование
&
:И исключительное использование
CONCATENATE
С другой стороны, я бы поспорил, что подобный UDF
BuildAddress
был бы лучшим решением (и был бы лучше приспособлен для обработки тонкостей форматирования адресов в доменах интернационализации - хотя я этого не реализовал) ...Но, возможно, еще один пример, который включает использование
&
внутри строкового литерала, лучше демонстрирует сложность чтения формулы, которая заставляет себя использовать исключительно операторы:Может быть лучше написать как:
Но производительность имеет значение, и в зависимости от числа объединяемых аргументов и длины каждого аргумента,
CONCATENATE
функция может превосходить оператор конкатенации в 4-6 раз. 255 аргументов объединяются, 10000 раз. Я не рекомендую использовать длину строки аргумента больше 32, иначе вам может не хватить памяти / сбой Excel.Вот грубый механизм синхронизации:
И результаты, в соответствии с длиной строки аргумента:
Но тогда мы даже не обсуждали слона в комнате. Вы строите команду SQL, используя конкатенацию. Не делай этого. Вы выполняете хранимую процедуру, которая принимает параметры. Если вы не очистили свои входные данные (а я предполагаю, что вы этого не сделали), то для создания строки SQL с использованием конкатенации требуется атака с использованием SQL-инъекции. Вы могли бы также выставить UDF под названием
JohnnyDropTables
...источник
Это различие семантической области. Конкатенация - это имя функции электронной таблицы. Ampersand - это оператор конкатенации, заимствованный из Visual Basic. Люди, которые никогда не открывают использование VBA, найдут функцию, гораздо более простую в использовании, чем синтаксис VBA. По той же причине существует горячая клавиша, значок и опция меню для сохранения, что упрощает использование программного обеспечения.
источник
Я использую оба.
Для длинных списков, которые мне, возможно, потребуется просмотреть визуально, запятая занимает меньше места, чем амперсанд.
Список ячеек, разделенных запятыми, легче читать, чем амперсанды, тем более что амперсанд выглядит (после 15 часового дня) слишком похожим на $.
Это обеспечивает значимую роль для CONCATENATE.
Но - согласитесь - нет никакой выгоды от скорости или какой-либо функциональной разницы.
источник
Один конкретный вариант использования=CONCATENATE(A1:A10)
намного короче=A1&A2&A3&A4&A4&A6&A7&A8&A9&A10
. Это также намного более очевидно правильно (на самом деле&
версия примера имеет намеренную ошибку).Я попробовал это сначала, но я использовал офис Excel, который на немецком языке.
TEXTKETTE
ведет себя так, как я описываю, но документация показывает, что это новая функция, и заменяетVERKETTEN
(что будет немецким эквивалентомCONCATENATE
).источник
CONCATENATE
форма более правильная. Если вы хотите объединить все элементы диапазона, задание диапазона намного менее подвержено ошибкам, чем предоставление каждого элемента по одному.&
формы имеет намеренную ошибку.=CONCATENATE(A1:A10)
не работает в Excel. Если у вас есть такая функция, это пользовательский UDF, а не собственный Excel. Но это не может быть UDF с тем же именем, что и у нативной функции.SUM
и операторов+
, но он не применяется кCONCATENATE
функции Excel .=CONCATENATE(A1:A2)
это никогда не тот же результат=A1&A2
=CONCATENATE(A1:A10)
дает результатA1
, поэтому он, очевидно, не только короче, но и отличаетсяЯ не видел истинных ответов здесь, но у меня есть некоторое понимание. (для тех, кто может в будущем посмотреть этот ответ)
«Конкатенация» является устаревшей унаследованной функцией, которая выполняет те же действия, что и «&», «&» была добавлена позже для согласованности в языках программирования. Однако «Конкатенация» была заменена на «Конкат» для поддержки диапазонов, поэтому вы можете комбинировать А1: А10 без необходимости каких-либо пользовательских сценариев. Символ «&» по-прежнему не допускает диапазон и занимает только первую ячейку таким же образом, как и функции «Конкатенация». Таким образом, если объединить диапазон, «Concat» дает это дополнительное изменение функции по сравнению с двумя предыдущими стилями, которые просто кодируются по-разному. Создание «Concatenate» и «&», по сути, предпочтение при использовании не-диапазонов, требующих комбинированных строк о том, как вы хотите печатать.
https://support.office.com/en-ie/article/concat-function-9b1a9a3f-94ff-41af-9736-694cbd6b4ca2
источник
RTFM Microsoft говорит, что использовать
&
.Кстати, вы получите разные ответы при использовании оператора SUM.
источник
=
альтернативы - ввод функций вроде@CONCATENATE(A1,A2)
и вычислений типа+A5+A6
или-A5+A6
.