Gewusst wie: ausführen eine SQL-Abfrage in eine Excel-Tabelle?
Ich versuche, erstellen Sie eine sub-Tabelle von einer anderen Tabelle mit den letzten Namen Feldern sortiert, A-Z, die haben eine Telefon-Nummer-Feld, das nicht null ist. Ich konnte dies tun, ziemlich leicht mit SQL, aber ich habe keine Ahnung, wie man über das ausführen einer SQL-Abfrage in Excel. Ich bin versucht zu importieren, die Daten in postgresql und nur Abfrage es gibt, aber das scheint ein wenig übertrieben.
Für das, was ich versuche zu tun, die SQL-Abfrage SELECT lastname, firstname, phonenumber WHERE phonenumber IS NOT NULL ORDER BY lastname
würde den trick tun. Es scheint zu einfach für ihn etwas zu sein, das kann Excel nicht nativ. Wie kann ich eine SQL-Abfrage auszuführen, wie dies in Excel?
InformationsquelleAutor der Frage Vap0r | 2013-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele schöne Möglichkeiten, um dies getan, die anderen haben schon suggestioned. Folgenden zusammen die "Excel-Daten per SQL-track", hier sind einige Hinweise.
Excel hat die "Datenverbindungs-Assistenten", die Ihnen erlaubt zu importieren oder link von einer anderen Datenquelle oder sogar innerhalb der gleichen Excel-Datei.
Als Teil von Microsoft Office (und OS) sind zwei Anbieter von Interesse: der alte "von Microsoft.Jet.OLEDB", und die neueste "Microsoft.Ass.OLEDB". Suchen Sie beim einrichten einer Verbindung (wie mit dem Datenverbindungs-Assistenten).
Nachdem die Verbindung zu einer Excel-Arbeitsmappe, ein Arbeitsblatt oder ein Bereich ist das äquivalent von einer Tabelle oder Ansicht. Der name der Tabelle von einem Arbeitsblatt ist der name des Arbeitsblatts mit einem Dollarzeichen ("$") angehängt, und umgeben mit eckigen Klammern ("[" und "]"); eine Reihe, es ist einfach der name der Reihe. Angeben eines unbenannten Zellbereich als Ihre Datenherkunft, fügen Sie standard-Excel Zeilen - /Spalten-notation, um das Ende des Blattes den Namen in den eckigen Klammern.
Native SQL wird (mehr oder weniger) das SQL von Microsoft Access. (In der Vergangenheit war es so genannte JET-SQL; jedoch Zugriff auf SQL entwickelt hat, und ich glaube, der JET ist veraltet, alt, tech.)
Beispiel, das Lesen einer Tabelle: SELECT * FROM [Tabelle1$]
Beispiel Lesen Sie einen Bereich: WÄHLEN Sie * AUS MyRange
Beispiel, das Lesen eines unbenannten Zellbereich: SELECT * FROM [Sheet1$A1:B10]
Gibt es viele, viele, viele Bücher und web-sites zur Verfügung, um Ihnen zu helfen, die Arbeit durch die Angaben.
=== Weitere Informationen ===
Standardmäßig, es wird davon ausgegangen, dass die erste Zeile Ihrer Excel-Datenquelle enthält Spaltenüberschriften als Feldnamen. Wenn dies nicht der Fall, aktivieren, müssen Sie diese Einstellung deaktivieren, oder Sie Ihre erste Zeile der Daten "verschwindet" als Feldnamen. Dies erfolgt durch hinzufügen der optionalen HDR= Einstellung, um die Erweiterten Eigenschaften der Verbindungszeichenfolge. Der Standardwert, der nicht angegeben werden muss, ist HDR=Yes. Wenn Sie keine Spaltenüberschriften haben, müssen Sie angeben HDR=No; der Anbieter Namen, Ihre Felder F1, F2, etc.
Vorsicht über die Angabe von Arbeitsblättern: Der Anbieter geht davon aus, dass deine Tabelle von Daten beginnt mit dem obersten, am weitesten Links stehende, nicht-leere Zelle auf dem Arbeitsblatt angegeben. In anderen Worten, Ihre Tabelle der Daten beginnen in Zeile 3, Spalte C ohne problem. Sie können jedoch, zum Beispiel, geben Sie einen worksheeet Titel oberhalb und Links von den Daten in Zelle A1.
Einen Vorsicht über die Angabe der Bereiche: Wenn Sie ein Arbeitsblatt angeben, wie Ihre Datenherkunft der Anbieter fügt neue Datensätze unterhalb der vorhandenen Datensätze in das Arbeitsblatt ein, wie es der Platz erlaubt. Wenn Sie angeben, eine Reihe (benannt oder Unbenannt), Jet fügt auch neue Datensätze unterhalb der vorhandenen Datensätze in den Bereich wie der Platz erlaubt. Allerdings, wenn Sie requery auf das ursprüngliche Angebot, das resultierende recordset beinhaltet nicht die neu hinzugefügten Datensätze, die außerhalb des Bereichs.
Daten-Typen (einen Versuch Wert) für TABELLE ANLEGEN: Short, Long, Single, Double, Currency, DateTime -, Bit -, Byte -, GUID, BigBinary, LongBinary, VarBinary, langer Text, VarChar, Decimal.
Verbindung zu "old tech" Excel (Dateien mit der Endung xls):
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. Verwenden Sie das Excel-5.0-source-Datenbank für Microsoft Excel 5.0 und 7.0 (95) Arbeitsmappen und verwenden Sie die Excel 8.0-source-Datenbank für Microsoft Excel 8.0 (97) und 9.0 (2000) und 10.0 (2002) Arbeitsmappen.Verbindung zu "aktuelle" Excel-Dateien (mit der xlsx-Datei-Erweiterung):
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Behandlung von Daten als text: IMEX Einstellung behandelt alle Daten als text. Provider=Microsoft.Ass.OLEDB.12.0;Daten Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(Weitere details auf http://www.connectionstrings.com/excel)
Weitere Informationen unter http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspxund bei http://support.microsoft.com/kb/316934
Verbindung zu Excel via ADODB über VBA eine detaillierte http://support.microsoft.com/kb/257819
Microsoft JET 4 details auf http://support.microsoft.com/kb/275561
InformationsquelleAutor der Antwort rskar
Können Sie dies tun, nativ wie folgt:
E1 und E2, wobei E1 ist leer und E2 enthält die Formel
=C6=""
wo C6 ist die erste Datenzelle der Telefonnummer-Spalte.
die Kriterien der Auswahl in E1:E2 und angeben, wo Sie möchten, kopieren Sie die
Ausgabe
Wenn Sie dies tun möchten programmgesteuert ich schlage vor, Sie verwenden das Makro-Rekorder zum aufzeichnen der oben genannten Schritte und Blick auf den code werfen.
InformationsquelleAutor der Antwort Charles Williams
tl;dr; Excel führt alle diese nativ nutzen, Filter und oder Tabellen
(http://office.microsoft.com/en-gb/excel-help/filter-data-in-an-excel-table-HA102840028.aspx)
Können Sie öffnen Sie excel programmgesteuert über eine oledb-Verbindung und ausführen von SQL auf die Tabellen im Arbeitsblatt.
Aber Sie können alles tun, was Sie Fragen zu tun, keine Formeln, die nur Filter.
haben ein Spiel rund um ... einige Dinge zu beachten:
TUN Sie es mit filtern, es sei denn, Sie gehen, um es zu tun eine Menge, oder Sie automatisieren möchten, importieren Sie die Daten irgendwo oder so.. aber der Vollständigkeit halber:
Ein c# option:
ein handliches Ort, um zu starten ist, um einen Blick auf das schema, da es möglicherweise mehr gibt, als Sie denken:
dann, wenn Sie Abfragen wollen, auf ein Blatt:
HINWEIS - Verwenden von Tabellen in excel!:
Excel "Tabellen" - Funktion, die die Daten Verhalten sich mehr wie eine Tabelle.. dies gibt Ihnen einige große Vorteile, aber ist nicht gehen zu lassen Sie tun, jede Art von Abfrage.
http://office.microsoft.com/en-gb/excel-help/overview-of-excel-tables-HA010048546.aspx
Für tabellarische Daten in excel, dies ist mein Standard.. erste, was ich zu tun ist klicken Sie in die Daten, dann wählen Sie "format als Tabelle" aus dem home-Abschnitt auf der Multifunktionsleiste. dies gibt Ihnen die Filterung und Sortierung von Standard-und ermöglicht den Zugriff auf die Tabelle und die Felder mit Namen (z.B. Tabelle[fieldname] ) dies ermöglicht auch Aggregatfunktionen auf Spalten z.B. max und Durchschnitt
InformationsquelleAutor der Antwort gordatron
Du kann Verwendung von SQL in Excel. Es ist nur gut versteckt.
Siehe dieses tutorial:
http://smallbusiness.chron.com/use-sql-statements-ms-excel-41193.html
InformationsquelleAutor der Antwort Piotr Kołaczkowski
Wenn Sie brauchen, um dies zu tun, sobald nur Folgen Sie Charles' Beschreibungen, aber es ist auch möglich, mit Excel-Formeln und hilfsspalten in Fall, dass Sie wollen, stellen Sie den filter dynamisch.
Können Sie davon ausgehen, die Daten auf dem Datenblatt Datenblatt und beginnt in Zeile 2 die folgenden Spalten:
Benötigst du zwei hilfsspalten auf dieses Blatt.
=if(A2 = "", 1, 0)
das ist der filter der Spalte, entsprechend der where-Bedingung=if(D2 <> 1, "", sumifs(D$2:D$1048576, A$2:A$1048576, "<"&A2) + sumifs(D$2:D2, A$2:A2, A2))
dies entspricht der Reihenfolge vonDiese Formeln nach unten kopieren so weit wie Ihre Daten geht.
Auf dem Blatt, das angezeigt werden soll Ihr Ergebnis erstellen Sie die folgenden Spalten.
=match(A2, DataSheet!$E$2:$E$1048576, 0)
dies ist die Zeile der entsprechenden Daten=iferror(index(DataSheet!A$2:A$1048576, $B2), "")
dies sind die eigentlichen Daten oder leer, wenn keine Daten vorhanden sindNach unten kopieren, werden die Formeln in B2 und C2 und kopiere vergangenen Spalte C, D und E.
InformationsquelleAutor der Antwort unique2
Können Sie Experimentieren mit der native-DB-Treiber für Excel in der Sprache/Plattform Ihrer Wahl. In der Java-Welt, können Sie versuchen, mit http://code.google.com/p/sqlsheet/ die ein JDBC-Treiber für die Arbeit mit Excel-Tabellen direkt. Ebenso können Sie die Treiber für die DB-Technologie für andere Plattformen.
Aber ich kann Ihnen garantieren, dass Sie bald gegen eine Wand mit der Anzahl der features, die diese wrapper-Bibliotheken bieten. Der bessere Weg ist die Verwendung von Apache HSSF/POI oder eine ähnliche Ebene der Bibliothek, aber es müssen mehr Programmieraufwand.
InformationsquelleAutor der Antwort Akhilesh Singh
Microsoft Access und LibreOffice Base können öffnen Sie eine Tabelle als Quelle und ausführen von sql-Abfragen auf. Das wäre der einfachste Weg, um ausführen alle Arten von Abfragen, und vermeiden das Chaos der Ausführung von Makros oder code zu schreiben.
Excel hat auch AutoFilter und Daten zu Sortieren, zu erreichen eine Menge von einfachen Abfragen wie in deinem Beispiel. Wenn Sie Hilfe benötigen mit diesen Eigenschaften, würde Google eine bessere Quelle für tutorials als mir.
InformationsquelleAutor der Antwort jbo5112
Könnte ich das Missverständnis mich, aber ist das nicht genau das, was eine pivot-Tabelle? Haben Sie die Daten in einer Tabelle oder einfach nur eine gefilterte Liste? Wenn es nicht eine Tabelle machen (Strg+l), wenn es ist, dann aktivieren Sie einfach eine beliebige Zelle in der Tabelle, und fügen Sie eine pivot-Tabelle auf einem anderen Blatt. Dann Fügen Sie die Spalten Nachname, Vorname, Telefonnummer des Bereichs Zeilen. Fügen Sie dann die Telefonnummer, um die filter-Sektion und filter aus der null-Werte. Jetzt Sortieren, wie normal.
InformationsquelleAutor der Antwort Holmes IV
Ich schlage vor, Sie haben einen Blick auf die MySQL -csv-Speicher-enginedie im wesentlichen ermöglicht das laden von beliebigen csv-Datei (einfach erstellt aus excel) in die Datenbank, sobald Sie dass haben, können Sie jeden beliebigen SQL-Befehl, den Sie möchten.
Es lohnt sich, einen Blick auf es.
InformationsquelleAutor der Antwort Juan Antonio Gomez Moriano
Wenn Sie GDAL/OGR zusammengestellt, mit der gegen die Expat-Bibliothek, die Sie verwenden können, die XLSX-Treiber zu Lesen .xlsx-Dateien, und führen Sie SQL-Ausdrücke aus einer Eingabeaufforderung. Zum Beispiel von einem osgeo4w shell im selben Verzeichnis wie die Tabellenkalkulation, verwenden Sie die ogrinfo an utility:
wird ein SQLite Abfrage auf
sheet1
- und Ausgabe das Ergebnis der Abfrage in einer ungewöhnlichen form:Oder führen Sie die gleiche Abfrage mit ogr2ogrum eine einfache CSV Datei:
Zu tun, ähnlich wie bei älteren .xls-Dateien, müssen Sie die XLS-Treibergebaut gegen die FreeXL Bibliothek, die nicht wirklich üblich (z.B. nicht von OSGeo4w).
InformationsquelleAutor der Antwort Mike T
Könnte ich schlage vor, geben QueryStorm einen Versuch - es ist ein plugin für Excel, das macht es sehr bequem zu bedienen SQL in Excel.
Es ist auch freemium. Wenn Sie nicht kümmern, über autocomplete, Fehler squigglies etc, Sie können es verwenden, kostenlos. Einfach downloaden und installieren, und Sie haben SQL-Unterstützung in Excel.
Disclaimer: ich bin der Autor.
InformationsquelleAutor der Antwort anakic