Excel - ekstrahiranje podatkov iz določenih stolpcev

Težava

Imam nekaj stolpcev podatkov, ki so videti takole:

 data1 ... data2 ... data3 val .......... val ....... val val ....... val .......... val val ....... val .......... val .......... val 

(data1-3 so samo imena podatkov v stolpcih)

To pretvorbo želim bolj ali manj samodejno spremeniti v .csv-datoteko, spremenjeno v skladu s temi vrstami:

 (data3) (data1) (data2) val ........- val ....... val val ........- val ....... val val .. ...... val ....... val val ........- val ....... val 

Glave stolpcev vstavite (), ker se ne smejo prikazovati v datoteki .csv. Vrstni red podatkov1-3 je v mojem primeru naključen, moram biti sposoben uporabiti drugačen vrstni red. Vem, kako oblikovati celice, da spremenimo vrednosti v negativne.

Pričakujem, da bo to nekaj podobnega formuli, ki pridobiva podatke iz imenovanega stolpca v datoteki; celice v zadnjem stolpcu bi bile podobne '= [path / sourcefile.xls] sheetname! column-values: "data2"'. To bi lahko bilo daleč in sploh ni mogoče v excel-u, in če to ni, bi rad vedel.

Prav tako bo izvorna datoteka vsebovala stolpce, ki se ne bodo uporabljale v datoteki csv. Proces mora zato določiti določene stolpce v podani datoteki, jih kopirati in preurediti ter jih nato prilepiti v .csv.

Kakšne ideje o tem, kako to storiti?

Rešitev

Spodaj je koda spodaj

  • 1. Podatki so v listu, imenovani Sheet1
  • 2. Začasna imena listov myTempSheet lahko ustvarite
  • 3. Ime datoteke CSV, ki bo shranjeno v tempCSV.csv
  • 4. Prazen stolpec ni potreben

Uporabiti

Ko prilepite kodo, izvedite makro. Vprašal vas bo, kako želite, da se stolpec prikaže v datoteki CSV. Torej, če je prvi stolpec, ki ga želite, D, pravilen odgovor je 4. Ko končate z informiranjem, kako se bodo pojavili stolpci, samo pritisnite ok brez vrednosti.

Koda:

 Sub createFile () Dim numOfCol As Integer Dim colNum As Integer Dim myTempSheet As String Dim dataSheet As String Dim colValue Kot Variant Dim ColIndex () Kot Integer Dim cvsName As String ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "Sheet1" cvsName = " tempCSV "Listi (dataSheet) .Select numOfCol = Celice (1, Columns.Count). End (xlToLeft) .Column ReDim ColIndex (numOfCol) Za colNum = 1 Za numOfCol colValue = InputBox (" Kateri stolpec mora biti v položaju "& colNum) & "v datoteki CVS", "Položaj Cola") Če colValue = "" Nato zapustite drugo možnost ColIndex (colNum) = colValue End Če je naslednja na napaki Nadaljuj naslednje liste (myTempSheet). Odstrani ob napaki GoTo 0 Sheets.Add ActiveSheet. Name = myTempSheet Za colNum = 1 Za numOfCol Če je ColIndex (colNum)> 0 Potem listi (dataSheet) .Izberi stolpce (ColIndex (colNum)) Izberite Selection.Copy Sheets (myTempSheet) .Izberite stolpce (colNum) .Izberite ActiveSheet.PasteSpecial. xlValue Else Izhod za konec Če so naslednji listi (myTempSheet) .Select numOfCol = Celice (1, Stolpci) .End (xlToLe ft) .Column Za colNum = 1 Za numOfCol Če celice (1, colNum) "" Potem celice (1, colNum) = "(" & Celice (1, colNum) & ")" Konec Če Naslednja ActiveWorkbook.SaveAs _ Ime datoteke: = cvsName & ".csv", _ FileFormat: = xlCSV, _ CreateBackup: = Podokno 

Opomba

Hvala za rizvisa1 za ta nasvet na forumu.

Prejšnji Članek Naslednji Članek

Top Nasveti