Προς το περιεχόμενο

ΛΙΣΤΑ ΣΕ Excel Help!!!!!!!


papazaf

Προτεινόμενες αναρτήσεις

Δημοσ.

εχω μια μεγαλη λιστα στο excel με την μορφη:ονομα

επωνυμο

τηλεφωνο

 

ονομα

επωνυμο

τηλεφωνο

δηλαδη καθε στοιχειο ανα γραμμη

 

πως μπορω να την κανω (μαζικα ,οχι ενα ενα) ονομα επωνυμο τηλεφωνο

ονομα επωνυμο τηλεφωνο

δηλ καθε στοιχειο ανα κολωνα?

  • Απαντ. 33
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Δημιουργείς ένα νέο sheet. Επιλέγεις την πρώτη γραμμή (με τα ονόματα), κάνεις copy, πας στο νέο sheet που δημιούργησες, paste special και επιλέγεις transpose. Tην ίδια διαδικασία ακολουθείς με τις υπόλοιπες γραμμές. Σε περίπτωση που έχεις ελληνικό Excel το transpose λέγεται αντιμετάθεση αν δεν κάνω λάθος.

Δημοσ.

'Auto isws na kanei

>
Dim objExcel
Dim wbook1
Dim wbook2
dim i

Set objExcel = CreateObject("Excel.Application")
Set wbook2 = objExcel.Workbooks.Add
Set wbook1 = objExcel.Workbooks.Open("test.xls") 'To onoma arxeiou pou tha alakseis

i = 1
do while ( wbook1.ActiveSheet.Cells(i,1) <> "")
wbook2.ActiveSheet.Cells(1 + cint(i/3), 1) = wbook1.ActiveSheet.Cells(i, 2)
wbook2.ActiveSheet.Cells(1 + cint(i/3), 2) = wbook1.ActiveSheet.Cells(i+1, 2)
wbook2.ActiveSheet.Cells(1 + cint(i/3), 3) = wbook1.ActiveSheet.Cells(i+2, 2)
i = i + 3
msgbox cstr(i)
loop

objExcel.Visible = True
Set objExcel =  Nothing

Δημοσ.

με transpose δεν γινεται γιατι ειναι 9500 γραμμες

md_agis η macro δεν δουλευει, δεν κανει copy paste, εξηγησε μου σε παρακαλω πως λειτουργει

Δημοσ.

Μην τη βάλεις σαν macro. Κάνε copy paste το κείμενο σε έναν text editor, σώστο με κατάληξη .vbs. και τρέξτο. Είναι vb script. Το αρχείο ανα τρεις γραμμές θα δημιουργεί μια γραμμή με τρις στήλες γι’ αυτό φρόντισε η σειρά να είναι πάντα :

 

ονομα

επωνυμο

τηλεφωνο

ονομα

επωνυμο

τηλεφωνο

 

Η original φόρμα excel θα πρέπει να μην έχει κενά

Άλλαξε το όνομα Test.xls με το όνομα του δικού σου αρχείου

Δημοσ.

Λοιπόν τώρα που είδα το screenshot νομίζω ότι βρήκα τι θες... Για δες στο δικό μου screenshot αν κατάλαβα καλά. Αυτό που έκανα είναι το εξής: Πρώτα πρώτα έβαλα μία στήλη με τον αύξοντα αριθμό της γραμμής ώστε το κάθε δεδομένο σου να έχει έναν ας πούμε κωδικό. Στην συνέχεια έφτιαξα δίπλα 5 στήλες

 

α/α Ονομα Διευθυνση Πολη Τηλεφωνο

 

Εφόσον τώρα το κάθε ένα έχει τον "κωδικό" του είναι εύκολο με την εντολή vlookup να μας κάνει την ταξινόμηση. Θα χρειαστεί να περάσεις την εντολή χειροκίνητα για την πρώτη γραμμή και στην συνέχεια τραβώντας κάτω θα συμπληρωθούν όλα. Εάν τα κελιά που θα δημιουργήσεις είναι όπως φαίνονται στο screenshot μου τότε οι εντολές που χρειάζεσαι είναι οι εξής

>
Ε2 :  =VLOOKUP($D2*5-4;$A$1:$B$65;2;0)
F2 :  =VLOOKUP($D2*5-3;$A$1:$B$65;2;0)
G2 :  =VLOOKUP($D2*5-2;$A$1:$B$65;2;0)
H2 :  =VLOOKUP($D2*5-1;$A$1:$B$65;2;0)

 

Όπου Β65 στις παραπάνω εντολές θα βάλεις το κελί όπου τελειώνουν τα δεδομένα σου (πχ Β9500)

 

Eλπίζω να σε βοήθησα....

 

υ.γ. Ναι δεν έχω αξιωθεί να μάθω VBA και λατρεύω τέτοιους "μπακάλικους" τρόπους!!!! :-D

post-6405-129062919178_thumb.gif

Δημοσ.

δεν το ελυσα, το παλευω ακομα, εκανα καποιες παραλαγες στον τροπο του grigas ,αλλα δεν μου δουλεψε....διαπυστωσα οτι σε καποιες καταχωρησεις ςχω 3 γραμμες ονομα επωνυμο τηλεφωνο , και σε καποιες 4 γραμμες ονομα επωνυμο περιοχη τηλεφωνο......

ο τροπος του φιλου grigas εχει δυνατοτητα να δουλεψει, εγω παιξα με τις τιμες των $D2*5-4;.......

μαλλον δεν υπαρχει λυση στο προβλημα μου.....αν καποιος εχει καμια ιδεα....

Δημοσ.

Αν κάθε καινούργια καταχώρηση ξεκινάει με τον αύξοντα αριθμό της, τότε άνοιξε VBA (Tools - Macro - "Visual Basic Editor"), Double click at "This Workbook" και ένα νέο παράθυρο κώδικα ανοίγει. Κάνε paste εκεί τον παρακάτω κώδικα.

 

Υποθέτω ότι οι αύξοντες αριθμοί αρχίζουν από το 1 και ότι οι καταχωρήσεις είναι 4 ή 5 γραμμές μαζί με τον αύξ. αριθμό (τελευταίο πάντα το τηλέφωνο).

 

>
Sub DoJob()
Dim ref As Range, DestRange As Range
Dim i as Long, StartFrom  As Long, CountCols  As Long

Set ref = Selection
Set DestRange = ref.Cells(0, 2)

StartFrom = 1

For i = 1 To ref.Rows.Count
   If Val(ref.Cells(i, 1)) = StartFrom Then
       If CountCols = 4 Then
           DestRange.Cells(, 2).Value = DestRange.Value
           DestRange.Value = ""
       End If
       Set DestRange = Cells(DestRange.Row + 1, ref.Column + 1)
       DestRange.Value = ref.Cells(i, 1)
       StartFrom = StartFrom + 1
       CountCols = 1
   Else
       Set DestRange = DestRange.Cells(, 2)
       DestRange.Value = ref.Cells(i, 1)
       CountCols = CountCols + 1
   End If
Next i
If CountCols = 4 Then
   DestRange.Cells(, 2).Value = DestRange.Value
   DestRange.Value = ""
End If

End Sub

 

Τέλος, μάρκαρε όλη την περιοχή της λίστας, πήγαινε πάλι στη Visual Basic και πάτα F5.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...