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.