Bir sütunu virgülle ayrılmış bir listeye dönüştürün


129

A sütununda belirtilmemiş sayıda satır alan basit bir Excel sayfası oluşturma görevim var:

1234
123461
123151
11321

Bunları, başka bir hücrede virgülle ayrılmış bir liste haline getirerek kullanıcının aşağıdaki gibi başka bir programa kolayca kopyalayıp yapıştırabilmesini sağlayın:

1234,123461,123151,11321

Bunu yapmanın en kolay yolu nedir?


8
Çözümün bir kısmı, sütunu bir satıra dönüştürmek için Düzenle, Özel Yapıştır, Devrik olabilir. Diğer program virgül yerine Sekmeleri kabul ederse, yeni satırın kopyalanmasından sonra hazırsınız demektir.
Arjan

Bunun tam tersini nasıl yapıyorsunuz? Virgülle ayrılmış bir listeye alın ve bir içerik sütununa mı dönüştürün?
stevvve

1
@ STEVVVE veri sekmesinde sütun sütun metin özelliğini kullanın. support.microsoft.com/en-us/kb/214261
Trevor

Bunun için notepad ++ gibi normal ifadeli yetenekli metin düzenleyicileri kullanıyorum. Sütun değerlerini kopyalayın ve editöre yapıştırın, düzenli ifadeyi arayın ve değiştirin, "\ r \ n" yerine "," ifadesini bulun. CSV'yi sütuna dönüştürmek istiyorsanız, ","
ifadesini

Yanıtlar:


145

Verilerinizin A1'de başladığını varsayarsak aşağıdakileri B sütununa koyacağım:

B1:

=A1

B2:

=B1&","&A2

Daha sonra B2 sütununu tüm sütuna yapıştırabilirsiniz. B sütunundaki son hücre şimdi A sütununun virgülle ayrılmış listesi olmalıdır.


8
Bu, sınırlı sayıda satır için harikadır, ancak (kullanılabilir belleğe bağlı olarak?) Birkaç bin satırın ötesinde birleştirme yaparsanız, çıkış değerinizi eksik bırakarak işlem kısa sürecektir. Dikkatli ol.
samthebrand

Excel 2013'ü güçlü bir Windows 10 Pro bilgisayarında kullanmak, yalnızca 30-35 satır sonra başarısız oldu. 200'den fazla kişiye ihtiyacım vardı.
Trialsman

75
  • Excel'de sütunu kopyala
  • Word'ü aç
  • "Özel yapıştır" sadece metin olarak
  • Word'deki verileri seçin (ayrı metne dönüştürmeniz gereken ,), Ctrl- - H(Bul ve değiştir) tuşuna basın.
  • "Neyi bul" kutusuna yazın ^p
  • "İle Değiştir" kutusuna yazın ,
  • "Tümünü değiştir" i seçin

+1 Microsoft'un burada "resmi" çözümüyle aynı: support.microsoft.com/kb/819964
Neo

çok sevimli bir çözüm ... :-)
Saravanan

sadece saf büyü :)
Sudheej

30

Office 365 Excel'iniz varsa, TEXTJOIN () uygulamasını kullanabilirsiniz:

=TEXTJOIN(",",TRUE,A:A)

görüntü tanımını buraya girin


23

Aslında VBA'de tüm işi yapan bir modül yarattım. Menzilli listemi alıyor ve kendi seçimim hücresine çıkan virgülle ayrılmış bir dize oluşturuyor:

Function csvRange(myRange As Range)
    Dim csvRangeOutput
    Dim entry as variant
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & entry.Value & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

O zaman hücreme yeni koydum =csvRange(A:A)ve bana virgülle ayrılmış bir liste veriyor.


1
Ah .. cevabımı oldukça yakın, ama sizin uygulamanızı seviyorum.
mpeterson

10

Alternatif bir yaklaşım, Excel sütununu bu tarayıcı içi araca yapıştırmak olacaktır:

convert.town/column-to-comma-separated-list

Bir metin sütununu virgülle ayrılmış bir listeye dönüştürür.

Kullanıcı zaten başka bir programa kopyalayıp yapıştırırken, bu onlar için kolay olabilir.


7

Böyle bir şey yapabilirsin. Büyük bir e-tablodan bahsetmiyorsanız, bu 'tamam' olur ...

  • Alt-F11, Listeyi oluşturmak için bir makro oluşturun (aşağıdaki koda bakın)
  • Kısayol veya araç çubuğu düğmesine atayın
  • Kullanıcı, sayı sütununu A sütununa yapıştırır, düğmeye basar ve listeleri B1 hücresine gider.

İşte VBA makro kodu:

Sub generatecsv() 

Dim i As Integer
Dim s As String

i = 1

Do Until Cells(i, 1).Value = ""
    If (s = "") Then
        s = Cells(i, 1).Value
    Else
        s = s & "," & Cells(i, 1).Value
    End If
    i = i + 1 
Loop

Cells(1, 2).Value = s

End Sub

B1 hücresinin formatını 'text' olarak ayarladığınızdan emin olun, yoksa karışık bir numara elde edersiniz. Bunu VBA'da da yapabildiğinizden eminim ama şu anda nasıl olduğundan emin değilim ve işe geri dönmem gerekiyor. ;)


7

Her satırın sonuna virgül koymak için vi veya vim kullanın:

%s/$/,/

Bu komutu açıklamak için:

  • % tüm çizgilere eylemi (yani, bul ve değiştir) yap
  • s yer değiştirmeyi gösterir
  • /Argümanları ayırır (yani s/find/replace/options)
  • $ çizginin sonunu temsil eder
  • , bu durumda değiştirilecek metin

Kabul. Yakınında bile değil.
muncherelli

Bağlam nedeniyle yorumlara katılmıyorum. Buraya gönderilen süper kullanıcı hesabına sahip biri genellikle vim kullanmak için kullanılan türdür.
uniquegeek

Ben ViM kullanıyorum ve temel fikrin faydalı olduğunu düşünüyorum. Fikir ve basit bir metin editörü kullanarak sorunu çözdüm.
Nigini,

2

Bir satırı sütuna çevirmek için How-To Geek'in rehberini kullanabilir ve onu tersten kullanabilirsiniz. Daha sonra verileri bir csv (virgülle ayrılmış biçim) olarak dışa aktarın; düz metin virgülle ayrılmış bir listeye sahipsiniz! İsterseniz not defterinden kopyalayıp tekrar excel'e ekleyebilirsiniz. Ayrıca, virgülden sonra bir boşluk istiyorsanız, "," ile "," yerine bir arama ve değiştirme özelliği de yapabilirsiniz. Umarım yardımcı olur!


CSV'ye dışa aktarma, bu kullanıcının yapabileceklerinin ötesindedir. Excel'in üzerine gelin ve tıklayın.
muncherelli

2

Muncherelli, Cevabını beğendim ve çimdikledim :). Sadece küçük bir şey, bir sayfadan veri çekip veri tabanını sorgulamak için kullandığım zamanlar oluyor. İsteğe bağlı "textQualify" parametresini, bir sorguda kullanılabilir virgülle ayrılmış bir liste oluşturmanıza yardımcı olan bir parametre ekledim.

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. csvRange(A:A)  or csvRange(A1:A2,"'") etc in a cell to hold the string
    Dim csvRangeOutput
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

1

Her listenin başlığını ve listelerini başlıklarından ayıran boş satırlara sahip birden fazla liste içeren bir excel sayfasını işlemek için generatecsv () alt öğesini geliştirdim. örnek

list title 1

item 1
item 2

list title 2

item 1
item 2

ve onlardan birini, her bir listede 1 tane olmak üzere çoklu satırlarda birleştirir.

Bu nedenle, bir müşterinin, konularına göre web siteleri için liste biçiminde birden fazla anahtar kelime göndermesini sağladım, bu anahtar kelimeleri web sayfalarına kolayca sokmanın bir yolunu buldum. Böylece rutini değiştirdi ve aşağıdakileri gündeme getirdi, ayrıca değişken isimlerini anlamlı isimlerle değiştirdim:

    Sub generatecsv()

      Dim dataRow As Integer
      Dim listRow As Integer
      Dim data As String

      dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script
      listRow = 1: Rem the row in column B that is getting written

      Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = ""
        If (data = "") Then
          data = Cells(dataRow, 1).Value
        Else
          If Cells(dataRow, 1).Value <> "" Then
            data = data & "," & Cells(dataRow, 1).Value
          Else
            Cells(listRow, 2).Value = data
            data = ""
            listRow = listRow + 1
          End If
        End If
        dataRow = dataRow + 1
      Loop

      Cells(listRow, 2).Value = data

    End Sub

1

Sux2Lose'nin yanıtı benim tercih ettiğim yöntem, ancak birkaç binden fazla satırla uğraşıyorsanız işe yaramaz ve bilgisayarınızda çok fazla bellek yoksa, daha az sayıda satır için ayrılabilir.

Bu durumda en iyi yöntem, büyük olasılıkla sütunu kopyalamak, yeni çalışma kitabında özel olan geçmişte yeni bir çalışma kitabı oluşturmak A1ve Transposeböylece sütunun şimdi satır olması. Sonra çalışma kitabını a .csv. CSV'niz artık temel olarak bir metin düzenleyicide açabileceğiniz düz metin virgülle ayrılmış bir listedir.

Not: Csv olarak kaydetmeden önce sütunu bir satıra dönüştürmeyi unutmayın. Aksi halde, Excel değerler arasında virgül yapmayı bilmez.


-1

En kolay yollardan biri, bu tür virgül ayırma işlemleri için zamazin.com web uygulamasını kullanmaktır. Sütun verilerini doldurun ve virgülle ayrılmış bir liste yapmak için dönüştür düğmesine basın. İstenilen çıkışı geliştirmek için başka bazı ayarları bile kullanabilirsiniz.

http://zamazin.co/comma-separator-tool

görüntü tanımını buraya girin


Bu şimdi delim.co'da
Phil

-2

Sonucu =CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5)görüntülemek istediğiniz hücrede kullanın .


3
Bu ölçeklendirilemez bir manuel çözümdür.
Daniel Hári
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.