Значения, разделенные запятыми (буквально, а не csv) в одной и той же ячейке в Excel, помещенные в отдельные ячейки

16220
Trufa

У меня есть столбец ячеек в Excel, который содержит письма, некоторые содержат только одно письмо, как они должны, но другие, имеют более одного письма на ячейку в этом формате:

one@example.com, two@example.com, three@example.com 

Чего я хочу добиться, так это получить их так:

one@example.com two@example.com three@example.com 

Я предполагаю (не верьте мне на слово), вы могли бы сделать что-то вроде if в соответствии с

if (cell contains ", ") get string from ", " to ", " and paste somehow else "b1" 

Возможно, вы кричите прямо сейчас на своем экране :) (или смеетесь), но это просто, как бы вы подошли к нему, не имея представления о функциях, которые будут использоваться, или если это вообще возможно.

Так что если у вас есть идеи, я ценю это!

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

Заранее спасибо!

Trufa

Кстати, я надеюсь, что объяснил проблему достаточно ясно, если нет, пожалуйста, попросите разъяснений!

РЕДАКТИРОВАТЬ: Проблема на самом деле решена, я сдался и сделал это один за другим, один метод, который никогда не подведет вас :) Я буду признателен за любые идеи в любом случае на будущее и ради знаний!

2

5 ответов на вопрос

2
Larry C

В Excel попробуйте Data -> Text to Columns.

Затем выберите «,» в качестве разделителя. Это поместит разрывы столбцов там, где запятые сейчас.

Я могу найти способ сделать это! спасибо, в любом случае, посмотрите на мое редактирование, пожалуйста :) Trufa 13 лет назад 0
0
Hello71

Разве вы не можете просто сохранить как CSV и сделать поиск и заменить на ,на \n?

Таким образом, \ n является допустимым в файле CSV, он будет понимать? Trufa 13 лет назад 0
@Trufa: это не так; Я использовал `\ n` в качестве заполнителя для разрыва строки в Notepad ++. Вам нужно выяснить, что представляет собой разрыв строки, как при поиске и замене в текстовом редакторе. Hello71 13 лет назад 0
Я могу найти способ сделать это! спасибо, в любом случае, посмотрите на мое редактирование, пожалуйста :) Trufa 13 лет назад 0
0
Chris

Export your Excel file to a csv.

Copy it across to a Linux machine and edit it in Vim editor.

Then type:

%s/,/\\n/g 

This is the breakdown of that command:

  • : - run command
  • %s - substitute
  • / - separator
  • , - string to find
  • / - separator
  • **** - a control character to ignore the next character, but in this case we want the following \n part to be the string it replaces the comma with
  • \n - string to replace comma with
  • / - separator
  • g - globally

This will find and replace the commas with a line break globally and put every cell onto a new line. You can then reimport this file into Excel.

Apologies if you dont use Linux - that is my speciality and the editor and string manipulation tools are much better than on Windows.

Notepad ++ также обрабатывает поиск и замену регулярных выражений и работает в Windows. Я использую его регулярно для подобных случаев. glallen 11 лет назад 0
0
ho1

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

Cells(1, 1).Select Dim curr As String Dim cnt As Integer cnt = 0 For i = 1 To ActiveCell.SpecialCells(xlLastCell).Row curr = Cells(i, 1).Value If InStr(curr, "@") Then If InStr(curr, ",") Then Dim tmp() As String tmp = Split(curr, ",") For j = LBound(tmp) To UBound(tmp) cnt = cnt + 1 Cells(cnt, 2).Value = tmp(j) Next Else cnt = cnt + 1 Cells(cnt, 2).Value = curr End If End If Next i 

Я не знаю VBA, хотя, так что, возможно, есть лучшие способы сделать это.

0
nifraz

Таким образом, вы хотите разрывать строки вместо запятых, тогда вам нужно найти и заменить их на char (10). Попробуйте эту формулу.

= ПОДСТАВИТЬ (А2, "", СИМ (10))

Формула заменит запятые из текста в A2 и заменит их на разрыв строки.

Например: если A2 содержит:

кто-то @ gmail.com, кто-то @ yahoo.com

тогда он вернется как:

somebody@gmail.com
somebody@yahoo.com