Excel - Belirtilen sütunlardan veri çıkarma

Konu

Buna benzeyen bazı veri sütunlarım var:

 veri1 ... veri2 ... veri3 val ......... val ........ val val ......... val ........ val val ......... val ........ val val ......... val ........ val 

(veri1-3 yalnızca sütunlardaki verilerin adlarıdır)

Bunu aşağı yukarı otomatik olarak şu satırlar boyunca değiştirilmiş bir .csv dosyasına dönüştürmek istiyorum:

 (veri3) (veri1) (veri2) val ........- val ....... val val ........- val ....... val val .. ......- val ....... val val ........- val ....... val 

Sütun başlıkları içeride () koyar çünkü .csv dosyasında gösterilmemesi gerekirdi. Verim1-3'ün sırası benim örneğimde rastgele, farklı bir düzen kullanabilmem gerekiyor. Değerleri negatif olarak değiştirmek için hücrelerin nasıl biçimlendirileceğini biliyorum.

Bir dosyadaki adlandırılmış bir sütundan veri alan bir formül gibi bir şey olmasını beklerdim; Son sütundaki hücreler '= [path / sourcefile.xls] sheetname! column-value: "data2"' gibiydi. Bu çok iyi olabilir ve excel'de bile mümkün olmayabilir ve eğer bilmek istemezsem.

Ayrıca sourcefile, csv dosyasında kullanılmayacak sütunlar içerecektir. Bu nedenle, işlemin belirtilen sütunları belirtilen dosyada tanımlamaları, kopyalayıp yeniden düzenlemeleri ve ardından .csv'ye yapıştırmaları gerekir.

Bunun nasıl yapılacağı hakkında bir fikriniz var mı?

Çözüm

Aşağıdaki kod varsayılır

  • 1. Veriler Sayfa1 denilen sayfadadır.
  • 2. myTempSheet adlı geçici bir sayfa oluşturulabilir
  • 3. tempCSV.csv dosyasına kaydedilecek CSV dosya adı
  • 4. Boş bir sütuna gerek yoktur

Kullanmak

Kodu yapıştırdıktan sonra makroyu yürütün. Sütunun CSV'de nasıl görünmesini istediğinizi soracaktır. Böylece, istediğiniz ilk sütun D ise, doğru cevap 4'tür. Sütunların nasıl görüneceğini bildirmeyi tamamladığınızda, sadece herhangi bir değeri olmayan ok tuşuna basın.

Kod:

 Alt createFile () Dim numOfCol Tamsayı Olarak Dim colNum Tamsayı Olarak Dim myTempSheet Dize Olarak Dim dataSheet Dize Olarak Dim colValue Varyant Olarak Dim ColIndex () Tamsayı Olarak Dim cvsName Dize Olarak ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "Sheet1" came = "myTempSeet" tempCSV "Sayfalar (dataSheet). numOfCol = Hücreler (1, Sütunlar. Miktar) .Seçin (xlToLeft) .Column ReDim ColIndex (numOfCol) colNum için = 1 NumOfCol için colValue = InputBox (" sütununda "ne olmalı" & "CVS dosyasında", "Sütun Konumu") Eğer colValue = "" Sonra Başka Çıkmak İçin Çık ColIndex (colNum) = colValue Sonrasında Hata Sırasında Sonra Sonraki Sayfaları Devam Et (myTempSheet). Hata Sırasında Silme 0 Sayfada. Name = myTempSheet colNum için = 1 ColIndex (colNum)> 0 ise numOfCol öğesine> 0 Sonra Sayfalar (dataSheet). Sütunlar (ColIndex (colNum)) öğesini seçin.Seçim.Copy Sayfaları'nı seçin (myTempSheet) .Seçim Sütunları (colNum) öğesini seçin. xlValue Else Başka Sayfalar Sonu Sonunda Çık (myTempSheet) .Seçin numOfCol = Hücreler (1, Sütunlar. Sayı) .End (xlToLe ft) .Column Sütun için = 1 numOfCol için Hücreler (1, colNum) ise "" Sonra Hücreler (1, colNum) = "(" & Hücreler (1, colNum) & ")" Sıradaki ActiveWorkbook.SaveAs _ Dosya Adı: = cvsName & ".csv", _ FileFormat: = xlCSV, _ CreateBackup: = Gerçek Son Sub 

Not

Forumdaki bu ipucu için rizvisa1 'e teşekkür ederiz.

Önceki Makale Sonraki Makale

En Ipuçları