Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Συναρτήσεις] Εισαγωγή δεδομένων σε πίνακα (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/785-eisagogi-dedomenon-se-pinaka.html)

manolis 17-10-10 17:50

Εισαγωγή δεδομένων σε πίνακα
 
1 Συνημμένο(α)
Καλησπέρα

Εχω ένα πίνακα στο Φύλλο1 ο οποίος ενημερώνεται απο τιμές που βρίσκονται στο Φύλλο2 οι οποίες δημιουργούνται αυτόματα απο άλλο αρχειο

Αυτο που προσπαθώ να κάνω , αλλα δεν τα καταφέρνω, είναι να ενημερώνεται αναλογα με τον μήνα που επιλέγω στο Φύλλο2 χωρίς να χάνονται οι προηγούμενοι μήνες.

Αν είναι δυνατόν η λύση που θα μου προτείνετε να μην ειναι με VBA αλλα με συναρτήσεις

Ευχαριστώ
Μανώλης

gr8styl 18-10-10 00:55

Φίλε Μανώλη,

Δεν γίνεται να αποδώσουμε σε κάποιο κελί μια τιμή με κάποιο τύπο κάνοντας αναφορά σε άλλο κελί και όταν αλλάξει η τιμή στο δεύτερο κελί να μην αλλάξει και η τιμή στο πρώτο κελί.:hammer-smilies-0003

Για να μην αλλάξει η τιμή για τους προηγούμενους μήνες θα πρέπει να επιλέξουμε μια από τις 3 παρακάτω λύσεις:

1) Κάνουμε αντιγραφή επικόλληση τιμές μόνο στα κελιά που θέλουμε να διατηρήσουν τις τιμές τους πριν εξαφανιστεί η τιμή από το φύλλο2. Aν το θέλουμε αυτοματοποιημένο πρέπει να χρησιμοποιήσουμε VBA

2) Καταργούμε τον αυτόματο υπολογισμό, αλλά έτσι δεν θα γίνει και ενημέρωση του νέου μήνα που σε ενδιαφέρει, άρα μάλλον αποκλείεται αυτή η λύση.

3) Διατήρηση όλων των τιμών για όλους τους μήνες στο Φύλλο2. Για να βοηθήσω σε αυτή τη προσέγγιση θα πρέπει να μας πεις τι ακριβώς εννοείς όταν λες "οι τιμές στο Φύλλο2 δημιουργούνται αυτόματα από άλλο αρχείο". Με τρόπο: Query, VBA, External link ... ?

Νομίζω ότι η σωστότερη λύση είναι η 1 με VBA.:plaf:

Ελπίζω να βοήθησα.
Θανάσης

manolis 18-10-10 13:49

Γεία σας

Φίλε Θανάση ευχαριστώ για τις απαντήσεις που μου έδωσες.

Το αρχείο το επεργάζομαι με VBA ( με τον εύκολο τρόπο της καταγραφής μακροεντολών plaf:).
Ο λόγος που ζήτησα λύση με συναρτήσεις είναι ότι εκεί που στέλνω το τελικό αρχείο εχουν κλειδωμένα μηχανήματα χωρίς την δυνατότητα των μακροεντολών.

Αν θες πρότεινε την λύση με VBA και νομίζω οτι έχω βρει τον τρόπο το τελικό αρχείο να είναι χωρις μακροεντολές.
Το έχω μισοετοιμάσει αλλα δεν το ανεβάζω γιατι όλοι οι καλοί φίλοι :friends: σε αυτό το φορουμ εχουν ενα κακό ελάτωμα !!!!!!!!
Μόλις ρωτήσουμε κάτι μας το ετοιμάζουν και μας το δίνουν έτοιμο στο πιάτο
Θέλω να παιδευτώ λίγο για να μάθω και αν δυσκολευτώ ξέρω που θα ρωτήσω.
Οταν το τελειώσω θα ανεβάσω ενα δείγμα για να το δείτε

Μανωλης

Tasos 19-10-10 14:35

Καλησπέρα Μανώλη!


Δώσε μας σε παρακαλώ περισσότερες λεπτομέρειες.

Αν κατάλαβα καλά το φύλλο 2 δέχεται αυτόματα τις εγγραφές από κάποιο εξωτερικό πρόγραμμα.
Τι ακριβώς συμβαίνει;
  • Αντικαθίσταται το φύλλο από καινούργιο;
  • Απλά ενημερώνονται οι τιμές του από το εξωτερικό αυτό πρόγραμμα;
Παράθεση:

Αυτο που προσπαθώ να κάνω αλλα δεν τα καταφέρνω είναι να ενημερώνεται αναλογα με τον μήνα που επιλέγω στο Φύλλο2 χωρίς να χάνονται οι προηγούμενοι μήνες.
  • Πόσους πίνακες έχει το φύλλο 2;
  • Σε ποιο φύλλο βρίσκονται οι προηγούμενοι μήνες που δεν θέλεις να χαθούν;
Φιλικά

Τάσος

manolis 19-10-10 15:46

1 Συνημμένο(α)
Καλησπέρα σε όλη την παρέα

Επειδή δεν διατύπωσα:hammer-smilies-0003:hammer-smilies-0003:hammer-smilies-0003 σωστά την ερωτηση μου και δημιουργήθηκαν ερωτηματα σας στέλνω τα απαραίτητα αρχεία και σας δίνω τις ανάλογες εξηγησεις.

Τα αρχεία αντιγράψτε τα στο C η μπειτε στη VBA για να αλλαξετε την διαδρομή των αρχείων
Ανοίγουμε το αρχείο ΔΕΙΚΤΕΣ και όταν μας ζητηθεί η ημερομηνία δίνουμε 1/8/2010

1.Τα δεδομένα τα παίρνω από το αρχείο stat.dbf
2. Τα επεξεργάζομαι στο φυλλο 1
3. Το αποτέλεσμα φαίνεται στο φύλλο2
4. Βαζω επιπλέον και άλλες πληροφορίες
5. Γινεται υπολογισμός στο φύλλο Δείκτες

Και φτάνουμε στο ζητούμενο:icon_hihi::icon_hihi:
Θέλω από το φύλλο ΔΕΙΚΤΕΣ οι τιμές στα κελια Ι19 & Ι36 να μεταφέρονται στο φύλλο ΔΙΑΓΡΑΜΜΑ στην στήλη C & B αντίστοιχα ανάλογα με τον μήνα χωρίς να σβήνονται οι προηγουμενοι

Μετα από όλα αυτά αντιγράφω τα φύλλα ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΑΓΡΑΜΜΑ στο αρχείο ΔΕΙΚΤΕΣ ΑΠΟΔΟΣΗΣ ΤΕΛΙΚΟ

Πιστεύω να ημουν κατανοητός:crazy2:

Σας ευχαριστώ όλους
Μανωλης

gr8styl 20-10-10 02:09

1 Συνημμένο(α)
Φίλε Μανώλη,
θα σου πρότεινα όλα αυτά που κάνεις με VBA στο "ΔΕΙΚΤΕΣ.xls" να τα αντικαταστήσεις με:
Εισαγωγή εξωτερικών δεδομένων και να χρησιμοποιήσεις ερώτημα σε βάση δεδομένων "Αρχείο DBase". Φυσικά ορίζεις το αρχείο σου stat.DBF σαν πηγή.
Έτσι μέσω του MS-Query θα κάνεις εισαγωγή μόνο των δεδομένων (στηλών) που σε ενδιαφέρουν (PP1,PP6 και PP7).
Στις ιδιότητες του ερωτήματος μπορείς να καθορίσεις να παίρνεις μοναδικές τιμές μόνο, οπότε έχεις απλά και καθαρά τα δεδομένα των ημερομηνιών που χρειάζονται.
Με την συνάρτηση =DATEDIF(Αρχή;Τέλος;"d") μπορείς να υπολογίσεις τις ημέρες που μεσολαβούν μεταξύ Αρχής και Τέλους.
Οι παράμετροι που θέλεις να υπολογίσεις από εκεί και πέρα είναι θέμα τύπων που έχεις ήδη.

Δες στο συνημμένο τι εννοώ όπου όπως θα διαπιστώσεις απέφυγα να σου δώσω ολοκληρωμένη λύση.
Μπορείς λοιπόν να το μελετήσεις και να το πας παραπέρα και όπου χρειαστεί εδώ είμαστε.
Έτσι θα έχεις και την ικανοποίηση του "Do It Yourself (DIY)" :dft012:

Θανάσης

ΥΓ Αν το αρχείο stat.DBF περιέχει τα δεδομένα για όλους τους μήνες μπορείς να υπολογίζεις όλους τους μήνες ταυτόχρονα (χωρίς VBA)

manolis 20-10-10 09:14

Καλημέρα

:oooops: Που είναι το συνημμένο? :oeo:

Της νυχτας τα καμώματα τα βλέπει η μέρα και γελά :001_tt2:

nisgia 20-10-10 10:36

Καλημέρα Μανώλη!

Προφανώς, αφού όπως δήλωσες δεν θέλεις έτοιμες λύσεις, ο Θανάσης σκέφτηκε πως είναι καλύτερα
να σου δώσει μόνο την περιγραφή του. :001_tt2::005:

Φιλικά,
Γιάννης

gr8styl 20-10-10 19:14

Πολύ σωστά "Της νυχτας τα καμώματα τα βλέπει η μέρα και γελά" :wall:

Ευχαριστώ Γιάννη για την διπλωματική συγκάλυψη :dft012:

Λοιπόν για να μην βγάζετε κόκκινες γλωσσίτσες διόρθωσα το ποστ ανεβάζοντας το συνημμένο. (εδώ) :whistle:

manolis 22-10-10 15:24

Καλησπέρα

Ακολούθησα τις συμβουλές σας και σχεδόν έχω τελειώσει.
Αλλα μου έχει προκύψει ένα προβληματάκι.
Κάνω εισαγωγή εξωτερικών δεδομένων με το Query και μόλις επιλέξω τον τυπο του αρχείου ( dbase) μου βγάζει αυτό το μήνυμα

Αποτυχία σύνδεσης του προγράμματος οδήγησης ODBC Dbase
Προέκυψε μη αναμενόμενο σφάλμα από πρόγραμμα οδήγησης εξωτερικής βάσης δεδομένων (10018)


Πατάω Οκ και συνεχίζω κανονικά
Αυτό μου το βγάζει και σε 2003 και σε 2007
Γιατί μπορει να συμβαίνει αυτό?

gr8styl 22-10-10 19:48

Φίλε Μανώλη,
για να δούμε ποιο ακριβώς είναι το πρόβλημα θα πρέπει να βεβαιωθούμε ότι χρησιμοποιείς τον σωστό οδηγό ODBC.

Κανονικά ο οδηγός ODBC που χρησιμοποιείται για Αρχεία dBase (.dbf) είναι το C:\WINDOWS\system32\odbcjt32.dll

Αυτό μπορείς να το ελέγξεις μέσω του "Πίνακας ελέγχου ==> Εργαλεία διαχείρισης ==> Πηγές δεδομένων (ODBC)"
Στην καρτέλα DSN χρήστη δίπλα από το Αρχεία dBase πρέπει να γράφει Microsoft dBase Driver (*.dbf)
Στήν καρτέλα Προγράμματα οδήγησης δίπλα από το Microsoft dBase Driver (*.dbf) πρέπει να γράφει το ODBCJT32.DLL

Για δες και πες μας αν είναι έτσι τα πράγματα και ποια είναι η έκδοση και η ημερομηνία του ODBCJT32.DLL που έχεις.:023:

Μια δεύτερη δοκιμή είναι να φτιάξεις <Νέα προέλευση δεδομένων> και να δεις αν παραμένει το πρόβλημα.
Ανοίγεις το Excel και επιλέγεις Δεδομένα -> Εισαγωγή εξωτερικών δεδομένων -> Δημιουργεία ερωτήματος σε βάση δεδομένων...
Επιλέγεις <Νέα προέλευση δεδομένων>
1. Σαν όνομα δίνεις ότι θέλεις πχ manosDBFfiles
2. Σαν πρόγραμμα οδήγησης επιλέγεις Microsoft dBase Driver (*.dbf)
3. Στην Σύνδεση (click button) ξετσεκάρεις το Χρήση τρέχοντος καταλόγου και πατώντας το Επιλογή καταλόγου (click button) πας και επιλέγεις τον κατάλογο που περιέχει το STAT.dbf πχ C:\TEMP\MANOS
4. Σαν πίνακα επιλέγεις το STAT
click OK
Έτσι μπορείς να επιλέξεις σαν πηγή το manosDBFfiles το οποίο θα σου ανοίξει κατευθείαν το stat.dbf για να επιλέξεις πεδία.

Θα περιμένω να μας πεις τι έκανες και αν τα κατάφερες. :newpaper:

Τα λέμε
Θανάσης

manolis 22-10-10 21:34

Καλησπέρα

Φίλε Θανάση
Εκανα αυτά που μου είπες και τα αποτελέσματα είναι :


α. Δίπλα απο τα αρχεία dbase εχει το Microscoft Access dBASE drivers και χρησιμοποιεί το αρχειο ACEODBC :wtf:.

β. Το αρχείο ODBCJT32.DLL είναι η έκδοση 6.01.7600.16385 με ημερομηνία 14-7-2009.

γ. Η δευτερη δοκιμή που μου πρότεινες δούλεψε μια χαρά :thumbup::047:

To Office ειναι 2007 και το λειτουργικό win 7 ελληνικα και τα 2 αν παίζει κάποιο ρόλο αυτό


:thanks:

gr8styl 23-10-10 01:11

Παράθεση:

Αρχική Δημοσίευση από manolis (Μήνυμα 4101)
α. Δίπλα απο τα αρχεία dbase εχει το Microscoft Access dBASE drivers και χρησιμοποιεί το αρχειο ACEODBC :wtf:.

Δεν διαθέτω windows 7 και δεν ξέρω αν το ACEODBC είναι το σωστό. Στο προηγούμενο μήνυμα μου αναφερόμουν σε windows XP.

Παράθεση:

Αρχική Δημοσίευση από manolis (Μήνυμα 4101)
β. Το αρχείο ODBCJT32.DLL είναι η έκδοση 6.01.7600.16385 με ημερομηνία 14-7-2009.

Λογικό φαίνεται αφού έχεις win7. Στο δικό μου winXP ειναι 4.00.6305.00 14-4-2008

Παράθεση:

Αρχική Δημοσίευση από manolis (Μήνυμα 4101)
γ. Η δευτερη δοκιμή που μου πρότεινες δούλεψε μια χαρά :thumbup::047:

Πολύ χαίρομαι που βοήθησα :icon_hihi::yahoo:

Τα λέμε.
Θανάσης

Tasos 24-10-10 12:00

Καλημέρα σε όλους!
Σε περιπτώσεις που για κάποιο λόγο χρειαστεί επανασύνδεση ή και για τη δημιουργία νέου ερωτήματος/σύνδεσης
σε εξωτερική πηγή δεδομένων τύπου *.DBF, αφού επιλέξουμε το επιθυμητό φύλλο
στην Excel (νέο ή με ήδη υπάρχουσα σύνδεση), μπορούμενα χρησιμοποιηήσουμε τον παρακάτω παραδειγματικό κώδικα:

Ελπίζω να σας φανεί χρήσιμος!

Sub SetNewDBFConnection()
Dim ArrSQL, wks As Worksheet, cnn, DbfFile As String, BaseNameDbfFile As String, fso As Object

Set wks = ActiveSheet
Set fso = CreateObject("Scripting.FileSystemObject")
DbfFile = GetDBFFile
If DbfFile = vbNullString Then Exit Sub

cnn = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password=" """;User ID=Admin;Data Source=,"
cnn = cnn & Replace(fso.GetParentFolderName(DbfFile) & "\", "\\", "\")
cnn = cnn & ";Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:" _
& "System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database " _
& "Password="""";Jet OLEDB:Engine Type=18;Jet OLEDB:Database Locking ," _
& "Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global " _
& "Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:," _
& "Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet " _
& "OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Wit," _
& "hout Replica Repair=False;Jet OLEDB:SFP=False"
cnn = Split(cnn, ",")

If wks.QueryTables.Count > 0 Then
wks.QueryTables(1).Connection = Array(cnn)
Else
wks.QueryTables.Add Connection:=Array(cnn), Destination:=Range("A1")
End If

BaseNameDbfFile = fso.GetBaseName(DbfFile)

ArrSQL = "SELECT DISTINCTROW [PP1], CDate([PP6]) AS MyDate, CDate([PP7]) AS MyDate1 " _
& "FROM [" & BaseNameDbfFile & "|] " _
& "GROUP BY [PP1],[PP6], [PP7] " _
& "ORDER BY CDate([PP6])" ' μπορεί να προσαρμοστεί

ArrSQL = Split(ArrSQL, "|")

With wks.QueryTables(1)
.CommandType = xlCmdSql
.CommandText = Array(ArrSQL)
.RowNumbers = False
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = DbfFile
.Name = BaseNameDbfFile
.Refresh BackgroundQuery:=False
End With

End Sub

Function GetDBFFile() As String
Dim fld As FileDialog
Set fld = Application.FileDialog(msoFileDialogFilePicker)
With fld
.Filters.Clear
.Filters.Add "DBF Files", "*.DBF"
If .Show Then GetDBFFile = .SelectedItems(1)
End With
End Function


Η ώρα είναι 14:56.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2