Есть ли способ в Excel взять столбец и преобразовать его в объединенную строку - PullRequest
5 голосов
/ 18 июня 2010

Я хочу взять список имен, которые находятся в нескольких строках, и объединить их в одну ячейку, например:

Джо
Боб
George

и преобразовать это в одну ячейку, которая имеет это:

"Джо", "Боб", "Джордж"

Ответы [ 6 ]

7 голосов
/ 26 декабря 2014

Попробуйте использовать функцию TRANSPOSE и нажмите F9 на ней:

A1:

Джо

Bob

George

B1: (введите в функциональной панели)

= TRANSPOSE (A1: A3)

Выделите TRANSPOSE (A1: A3) и нажмите F9.

Это даст вам:

{ "Джо", "Боб", "Джордж"}

Скопируйте и вставьте этот список. Вот и все.

Чтобы объединить слова, вам просто нужно сделать:

= CONCATENATE (TRANSPOSE (A1: A3))

Выделите TRANSPOSE (A1: A3), нажмите F9, затем снимите скобки:

= CONCATENATE ( "Джо", "Боб", "Джордж")

3 голосов
/ 18 июня 2010

Есть два основных способа, которые я знаю.

Самый быстрый способ -

  1. В столбце А перечислены ваши имена
  2. Скопировать значение A1 в B1 - «Джо»
  3. В B2 введите формулу `= B1 &", "& A2`
  4. Выберите B2, скопируйте формулу и вставьте оставшуюся часть столбца B на всю длину столбца A. Последняя ячейка в столбце B будет содержать разделенный запятыми список значений из столбца A.

Лучший путь -
Создайте свою собственную функцию vb, которая выполняет итерацию по диапазону ячеек, и вместо того, чтобы суммировать их как sum, просто объедините их.

Я делаю это все время, поэтому, если кто-то знает о встроенной функции Excel, скрытой где-то в документации MS, которая объединяет диапазоны, вы сохраните день.

1 голос
/ 28 июня 2015

Добавьте это в качестве макроса на лист Excel и используйте в качестве пользовательской функции с диапазоном и разделителем в качестве ввода

Function Concat(myRange As Range, Optional myDelimiter As String) As String
  Dim r As Range
  Application.Volatile
  For Each r In myRange
    If Len(r.Text) Then
      Concat = Concat & IIf(Concat <> "", myDelimiter, "") & r.Text
    End If
  Next
End Function
1 голос
/ 18 июня 2010

Это так просто.Возможно, вы захотите использовать в сочетании с отделкой, слева, справа и найти.Наслаждайтесь!

= A1 & " " & B1

1 голос
/ 18 июня 2010

Если функция Excel CONCATENATE() не будет выполнять то, что вы хотите, эта ссылка может помочь.

0 голосов
/ 18 июня 2010

Вы можете использовать GetString с набором записей ADO.

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String

''This is not the best way to refer to the workbook
''you want, but it is very conveient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "SELECT * " _
       & "FROM [Sheet1$A:A] "

rs.Open strSQL, cn, 3, 3

''http://www.w3schools.com/ado/ado_getstring.asp
''str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
s = rs.GetString(, , , ", ")
ActiveSheet.Range("B1") = s

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...