Sütunlara VBA Metni

İçindekiler

Bu öğretici, VBA'da Range TextToColumns yöntemini kullanarak tek bir hücredeki metin dizesini birden çok sütuna nasıl dönüştüreceğinizi gösterecektir.

Sütunlara Metin

NS Menzil.TextToColumns VBA'daki yöntem, örneğin metin veya csv dosyalarından içe aktarılan verileri temizlemek için güçlü bir araçtır.

Aşağıdaki çalışma sayfasını inceleyiniz.

Verilerin tümü tek bir sütunda Excel'e geldi ve tırnak işaretleri ile ayrıldı.

Bu verileri sütunlara ayırmak için Range TextToColumns yöntemini kullanabilirsiniz.

TextToColumns Sözdizimi

ifade.TextToColumns (Hedef, Veri tipi, Metin Niteleyici, ArdışıkSınırlayıcı, Sekme, Noktalı virgül, Virgül, Uzay, Başka, DiğerKarakter, Alan Bilgisi, Ondalık Ayırıcı, BinAyırıcı, İzleyenEksiSayılar)

İfade

Bu, bölmek istediğiniz hücre aralığıdır - örneğin: Aralık(“A1:A23”).

TextToColumns yöntemindeki tüm bağımsız değişkenler isteğe bağlıdır (etraflarında köşeli parantezler bulunur).

Hedef

Sonucun yerleştirilmesini istediğiniz yer - genellikle verileri geçersiz kılar ve aynı konumda bölersiniz.

Veri tipi

Kullanmakta olduğunuz metin ayrıştırma türü - şunlardan biri olabilir: xlSınırlandırılmış (atlanırsa varsayılan) veya xlSabit Genişlik.

Metin Niteleyici

Bölmekte olduğunuz metindeki her alanın etrafında tırnak işaretleri (tekli veya çift) varsa, bunların tek mi yoksa çift mi olduğunu belirtmeniz gerekir.

Sonuç Sınırlayıcı

Bu, doğru veya yanlıştır ve VBA'ya aynı sınırlayıcılardan 2'sini 1 sınırlayıcıymış gibi birlikte düşünmesini söyler.

Sekme

Bu ya NS ile ilgili YANLIŞ, Varsayılan YANLIŞ - bu, VBA'ya verilerin bir Sekme ile sınırlandığını söyler.

Noktalı virgül

Bu yaNS ile ilgili YANLIŞ, Varsayılan YANLIŞ - bu, VBA'ya verilerin noktalı virgülle sınırlandığını söyler.

Uzay

Bu ya NS ile ilgili YANLIŞ, Varsayılan YANLIŞ - bu, VBA'ya verilerin bir Boşluk ile sınırlandırıldığını söyler.

Başka

Bu ya NS ile ilgili YANLIŞ, Varsayılan YANLIŞ. Bunu True olarak ayarlarsanız, bir sonraki argüman, DiğerKarakter belirtilmesi gerekmektedir.

DiğerKarakter

Bu, metnin ayrıldığı karakterdir (örneğin: veya | örneğin).

Alan Bilgisi

Bu, ayrılmakta olan veri türü hakkında bilgi içeren bir dizidir. Dizideki ilk değer, verilerdeki sütun numarasını gösterir ve ikinci değer, ihtiyaç duyduğunuz veri türünü göstermek için kullanacağınız sabiti belirtir.

Metin, sayı ve tarih veri türlerini içeren 5 sütun için bir örnek şöyle olabilir:

Array(Array(1, xlTextFormat), Dizi(2, xlTextFormat), Dizi(3, xlGenelBiçim), Dizi(4, xlGenelBiçim), Dizi(5, xlMDYBiçim))

Bunu belirlemenin başka bir yolu şudur:

Array(Array(1, 2), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 3))

İkinci sütundaki sayılar, xlTextFormat sabitinin 2 değerine, xlGeneralFormat'ın (varsayılan) 1 değerine ve xlMDYFormat'ın 3 değerine sahip olduğu sabitlerin değerleridir.

Ondalık Ayırıcı

Verilerde sayılar varsa VBA'nın kullanması gereken ondalık ayırıcıyı belirtebilirsiniz. Atlanırsa, genellikle bir nokta olan sistem ayarını kullanır.

BinAyırıcı

Verilerde sayılar varsa, VBA'nın kullanması gereken binlik ayırıcıyı belirtebilirsiniz. Atlanırsa, genellikle virgül olan sistem ayarını kullanır.

İzleyenEksiSayılar

Bu argüman, büyük ölçüde, eksi işaretinin genellikle sayıdan sonra ve öncesinde olduğu eski sistemlerden oluşturulan veriler için uyumluluk içindir. Negatif sayıların arkasında eksi işareti varsa bunu True olarak ayarlamanız gerekir. Varsayılan Yanlış'tır.

Metni Sütunlara Dönüştürme

Aşağıdaki prosedür, yukarıdaki Excel verilerini sütunlara dönüştürecektir.

12345678910111213141516 Alt MetinToCol1()Range("A1:A25").TextToColumns _Hedef:=Aralık("A1:A25"),DataType:=xlSınırlı, _TextQualifier:=xlDoubleQuote, _ArdışıkSınırlayıcı:=Doğru, _Sekme:=Yanlış, _Noktalı virgül:=Yanlış, _Virgül:=Yanlış,Boşluk:=Doğru, _Diğer:=Yanlış, _FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _Ondalık Ayırıcı:="." , _BinlerceAyırıcı:=",", _TrailingMinusNumbers:=DoğruAlt Bitiş

Yukarıdaki prosedürde tüm parametreleri doldurduk. Ancak, birçok parametre false veya varsayılan ayara ayarlanmıştır ve gerekli değildir. Yukarıdaki prosedürün daha temiz bir versiyonu aşağıda belirtilmiştir. Hangi parametreleri kullandığımızı belirtmek için parametre adlarını kullanmanız gerekir.

1234567 Alt MetinToCol2()Range("A1:A25").TextToColumns _DataType:=xlSınırlı, _TextQualifier:=xlDoubleQuote, _ArdışıkSınırlayıcı:=Doğru, _Boşluk:=Doğru,Alt Bitiş

Gerçekte gerekli olan sadece 4 parametre vardır - veriler çift tırnak ile sınırlandırılmıştır, ardışık tırnakların tek olarak ele alınmasını istiyorsunuz ve veriler bir boşlukla ayrılmıştır!

Daha da hızlı bir kod satırı için parametre adlarını atlayabiliriz, ancak daha sonra parametrenin yerini kaydetmek için virgül koymamız gerekir. Sadece kullandığınız son parametreye kadar bilgi koymanız gerekir - bu durumda 8. parametre olan verileri ayıran Boşluk.

123 Alt MetinToCol3()Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , , TrueAlt Bitiş

Yukarıdaki prosedürlerden herhangi birini çalıştırdığınızda, veriler aşağıdaki grafiğe göre ayrılacaktır.

wave wave wave wave wave