Excel - Adatok kinyerése meghatározott oszlopokból

Probléma

Néhány olyan oszlop van, amelyek valamivel hasonlítanak ehhez:

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

(az adatok1-3 az oszlopok adatainak csak neve)

Ezt többé-kevésbé automatikusan konvertálni szeretném egy .csv-fájlra, amelyet ezen a vonalon módosítottak:

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

Oszlopfejlécek helyezkednek el (), mert nem kell őket megjeleníteni a .csv-fájlban. Például az adatok1-3 sorrendje véletlenszerű, más rendet kell használni. Tudom, hogyan kell formázni a sejteket az értékek negatívvá tételéhez.

Azt várnám, hogy valami olyan, mint egy képlet, amely egy fájl nevezett oszlopából gyűjti az adatokat; az utolsó oszlop cellái '= [path / sourcefile.xls] lapnév! oszlopértékek: "data2"'. Ez lehet, hogy ki van kapcsolva, és nem is lehetséges az Excelben, és ha nem akarom tudni.

A forrásfájl olyan oszlopokat is tartalmaz, amelyek nem használhatók a csv-fájlban. A folyamatnak ezért meg kell határoznia a megadott oszlopokat a megadott fájlban, másolnia és átrendezni, majd beilleszteni őket a .csv fájlba.

Bármilyen ötlet, hogyan kell ezt megtenni?

Megoldás

Az alábbi kód feltételezi

  • 1. Az adatok a Sheet1 lapban vannak
  • 2. Egy ideiglenes lap neve myTempSheet hozható létre
  • 3. A CSV fájl neve a tempCSV.csv fájlba mentésre kerül
  • 4. Nincs üres oszlop

Használni

A kód beillesztése után hajtsa végre a makrót. Megkérdezi, hogyan kívánja megjeleníteni az oszlopot a CSV-ben. Tehát, ha az első oszlop D, a helyes válasz: 4. Miután elvégezte az oszlopok megjelenésének tájékoztatását, nyomja meg az OK gombot anélkül, hogy bármilyen érték lenne.

Kód:

 Sub createFile () Dim numOfCol mint integer Dim colNum mint integer Dim myTempSheet mint karakterlánc Dim adatlap Stringként Dim colValue As Variantként Dim ColIndex () Integer Dim cvsName mint karakterláncként ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "Sheet1" cvsName = " tempCSV "Lemezek (adatlap) .Válassza ki a numOfCol = cellák (1, oszlopok számát) .End (xlToLeft). Oszlop ReDim ColIndex (numOfCol) A colNum = 1 számára A numOfCol colValue = InputBox (" Melyik oszlopnak kell lennie "& colNum) & "a CVS fájlban", "Col Position") Ha a colValue = "" Ezután kilép az Else ColIndex (colNum) = colValue vége Ha a következő hiba történik, folytassa a következő lapokat (myTempSheet). Törölje a hibát GoTo 0 Sheets.Add ActiveSheet. Név = myTempSheet A ColNum = 1-hez A numOfCol-hoz Ha ColIndex (colNum)> 0 Ezután lapok (adatlap). Válassza ki az oszlopokat (ColIndex (colNum)). Válassza ki a kiválasztást.Kivágási lapok (myTempSheet). Válassza ki az oszlopokat (colNum). Válassza ki az ActiveSheet.PasteSpecialt. xlValue Else Exit a végére Ha a következő lapok (myTempSheet) .Válasd a numOfCol = Cells (1, Columns.Count) elemet .End (xlToLe ft) .Column For colNum = 1 A numOfCol Ha cellák (1, colNum) "" majd cellák (1, colNum) = "(" & Cells (1, colNum) & ")" Vége Ha a következő ActiveWorkbook.SaveAs _ fájlnév: = cvsName & ".csv", _ FileFormat: = xlCSV, _ CreateBackup: = True End Sub 

jegyzet

Köszönet a rizvisa1-nek a fórumon található tippért.

Előző Cikk Következő Cikk

Top Tippek