Excel - datu izvilkšana no noteiktām kolonnām

Izdevums

Man ir dažas datu slejas, kas izskatās nedaudz līdzīgas:

 dati1 ... dati2 ... dati3 val ......... val ........ val val ......... val ........ val val ......... val ........ val val ......... val ........ val 

(dati1-3 ir tikai nosaukumi kolonnās)

Es vēlos to vairāk vai mazāk pārveidot par .csv-failu, kas mainīts šādās rindās:

 (data3) (dati1) (data2) val ........- val ....... val val ........- val ....... val. ......- val ....... val val ........- val ....... val 

Kolonnas virsraksti tiek ievietoti iekšpusē (), jo tie nav jāparāda .csv-failā. Manā piemērā datu secība1-3 ir nejauša, man ir jāspēj izmantot citu kārtību. Es zinu, kā formatēt šūnas, lai mainītu vērtības negatīvos.

Es ceru, ka tas būs kaut kas līdzīgs formulai, kas iegūst datus no nosauktajā slejā failā; šūnas pēdējā kolonnā izskatās kā '= [ceļš / sourcefile.xls] lapas nosaukums! kolonnu vērtības: "data2". Tas, iespējams, varētu būt neiespējami un pat neiespējami Excel, un, ja tas nav, es gribētu zināt.

Arī avota failā būs slejas, kas netiks izmantotas csv failā. Tāpēc procesam ir jānorāda norādītās slejas norādītajā failā, jākopē un jāpārkārto tās un pēc tam ielīmējiet tās .csv.

Jebkuras idejas par to, kā to izdarīt?

Risinājums

Turpmāk redzams kods

  • 1. Dati ir lapā Sheet1
  • 2. Var izveidot pagaidu lapu nosaukumus myTempSheet
  • 3. CSV faila nosaukums, kas jāsaglabā tempCSV.csv
  • 4. Nav aizpildīta tukša kolonna

Izmantot

Pēc koda ielīmēšanas izpildiet makro. Tas jums jautās, kā vēlaties, lai kolonna tiktu parādīta CSV. Tātad, ja pirmā kolonna ir D, pareizā atbilde ir 4. Tiklīdz būsit informēts par to, kā parādīsies kolonnas, vienkārši nospiediet ok bez vērtības.

Kods:

 Sub createFile () Dim numffol kā integer Dim colNum As Integer Dim myTempSheet Kā virkne Dim datu lapa Kā virkne Dim colValue Kā variants Dim ColIndex () Kā Integer Dim cvsName Kā String ThisWorkbook.Save myTempSheet = "myTempSeet" dataSheet = "Lapa1" cvsName = " tempCSV "Loksnes (datu lapa) .Izvēlieties numOfCol = šūnas (1, kolonnas.Skaitlis) .End (xlToLeft). Kolonna ReDim ColIndex (numOfCol) ColNum = 1 Lai numOfCol colValue = InputBox (" Kādai kolonnai jābūt pozīcijā "& colNum & "CVS failā", "Col Position") Ja colValue = "" Tad iziet uz citu ColIndex (colNum) = colValue Beigas Ja nākamā kļūda atsākt nākamās lapas (myTempSheet). Dzēst kļūda GoTo 0 Sheets.Add ActiveSheet. Nosaukums = myTempSheet ColNum = 1 Lai numOfCol Ja ColIndex (colNum)> 0 Pēc tam lapas (datu lapa) .Izvēlieties kolonnas (ColIndex (colNum)). Atlasiet atlasi.Kopējiet lapas (myTempSheet) .Izvēlieties kolonnas (colNum) .Izvēlieties ActiveSheet.PasteSpecial xlValue Else Exit beigu beigās, ja nākamās lapas (myTempSheet) .Izvēlieties numOfCol = šūnas (1, kolonnasCount) .End (xlToLe ft) .Column For colNum = 1 Lai numOfCol Ja šūnas (1, colNum) "" Tad šūnas (1, colNum) = "(" & Cells (1, colNum) & ")" Beigas Ja nākamais ActiveWorkbook.SaveAs _ Faila nosaukums: = cvsName & ".csv", _ FileFormat: = xlCSV, _ CreateBackup: = True End Sub 

Piezīme

Paldies rizvisa1 par šo padomu forumā.

Iepriekšējais Raksts Nākamais Raksts

Top Padomi