Dieser Artikel vermittelt Ihnen relevantes Wissen über Excel. Er stellt hauptsächlich die Verwendung von Tabellen in SQL-Abfragen vor, einschließlich Bereichstabellen, arbeitsmappenübergreifenden Tabellen usw. Ich hoffe, dass er für alle hilfreich ist.
Verwandte Lernempfehlungen: Excel-Tutorial
Heute werden wir über die Excel-Tabelle in SQL-Anweisungen sprechen.
Es gibt viele Unterschiede zwischen Excel-Arbeitsblättern und Datenbankdatentabellen. Der wichtigste Punkt besteht darin, dass die Datenbankdatentabelle aus Zeilen und Spalten besteht, während das Excel-Arbeitsblatt aus besteht Eine Zelle, und diese Zellen verfügen über eine eindeutige Adressausdrucksmethode, nämlich A1 oder R1C1. Sie können auch einen mit Daten verbundenen Zellbereich bilden, z. B. A2: H8.
Dann stellt sich die Frage: Wenn wir nur einen Teil eines Excel-Arbeitsblatts berechnen müssen, wie sollen wir das in SQL ausdrücken?
Diese Art von Problem kommt sehr häufig vor.
Zum Beispiel befindet sich die Excel-Titelzeile vieler Leute nicht in der ersten Zeile der Tabelle, sondern in der 2. Zeile...
Wie im Bild unten gezeigt
Zu diesem Zeitpunkt möchten wir die berechnen Zellen im Bereich der Spalte A2:F, sodass wir Feldnamen einfacher zum Verarbeiten von Daten anstelle des gesamten Excel-Arbeitsblatts verwenden können ...
Ein weiteres Beispiel: Es gibt zwei oder mehr „Tabellen“ in einer Tabelle ... Was bedeutet dieser Satz?
Siehe das Bild unten
In der im Bild gezeigten Tabelle gibt es sowohl eine „Lehrertabelle“ als auch eine „Schülertabelle“, wenn wir nur möchten, dass die SQL-Referenz die Lehrertabellendaten von A2 berechnet: D8 ...
...SQL in Excel unterstützt tatsächlich die Verwendung des Zellbereichs des Arbeitsblatts als „Tabelle“.
Für das im Bild oben gezeigte Problem kann die SQL wie folgt geschrieben werden:
SELECT 姓名,学科 FROM [数据表$A2:D8]
Die Abfrageergebnisse lauten wie folgt:
Im ersten Fall wissen wir, dass die Daten in Zelle A2 beginnen, aber wir Wenn wir nicht wissen, welche Zelle in Spalte F mit dem Raster endet, kann SQL wie folgt geschrieben werden:
SELECT 姓名,爱好 FROM [学生表$A2:F]
Wenn wir außerdem eine SQL-Referenz benötigen, um die Daten der gesamten Spalte D:G der Tabelle zu berechnen, kann SQL wie folgt geschrieben werden:
SELECT * FROM [学生表$D:G]
Fassen Sie die oben genannten Möglichkeiten zur Darstellung des Excel-Arbeitsblattbereichs zusammen, d. h. den Namen des Arbeitsblatts + Dollarzeichen $ + Zellenadresse im relativen Referenzzustand und schließen Sie ihn schließlich in eckige Klammern ein.
Einfach lila.
Tipps für diesen Abschnitt:
[Studententabelle $A2:F], wir sagen, dass sich diese Aussage auf den Zellbereich von Spalte A2 bis Spalte F beziehen kann, in dem die letzten Daten vorhanden sind, aber dies hat eine restriktive Voraussetzung ist ein nicht selbstverbundener Zustand. Der sogenannte Self-Join bezieht sich auf die Arbeitsmappe, die mit SQL selbst verknüpft werden soll. Im selbstverknüpfenden Zustand beträgt der maximale Ausdruck von A2:F A2:F65536 Zeilen. Wenn die zu diesem Zeitpunkt erforderliche Referenzzeile 65536 Zeilen überschreitet, verwenden Sie bitte den gesamten Tabellenmodus.
Ein bekanntes Problem ist, dass Excel-Funktionen bei der Verarbeitung arbeitsmappenübergreifender Daten sehr müde sind Sie müssen die entsprechende Arbeitsmappe öffnen, bevor Sie den Verbrauch berechnen können.
Ja, die VLOOKUP-Funktion muss nicht die entsprechende Arbeitsmappe öffnen und kann arbeitsmappenübergreifend verwendet werden, auch wenn Sie die Arbeitsmappe, auf die sie sich bezieht, löschen liegt daran, dass die relevanten Daten in der Arbeitsmappe, in der sich die Formel befindet, zwischengespeichert wurden, der VLOOKUP-Modus jedoch keine komplexe Verschachtelung von Funktionen unterstützt ... Schnippen Sie mit den Fingern, wenn Sie interessiert sind, werden wir an einem anderen Tag separat darüber sprechen.
...Ähm, zurück zu SQL~~
...Die SQL-Anweisungen, die wir zuvor geteilt haben, verarbeiten die Tabellen der aktuellen Arbeitsmappe. Wenn sich die Daten, die wir verarbeiten müssen, in anderen Arbeitsmappen befinden, wie sollen wir das ausdrücken? SQL?
Erhalten Sie zum Beispiel alle Daten der „Notentabelle“ in der „Student Table“. Ich bewundere Sie.
Wenn es sich um die OLE DB-Methode handelt (siehe Kapitel 1 dieser Tutorialreihe für diese Methode), lautet die SQL-Anweisung wie folgt:
SELECT * FROM [D:\EH小学\学生表.xlsx].[成绩表$]
Die angegebene Tabellenzeichenfolge nach FROM besteht aus zwei Teilen. Die erste eckige Klammer ist die Speicherpfad der angegebenen Arbeitsmappe. +Der vollständige Arbeitsmappenname mit Suffix, die letzte eckige Klammer ist der Arbeitsblattname und die beiden eckigen Klammern sind mit einem Punkt (.) verbunden.
Wenn Sie SQL-Anweisungen über VBA+ADO verwenden...
Eine Warnung auf der Vorderseite des Bücherregals: Kinder mit schlechten VBA-Grundkenntnissen überspringen bitte den folgenden Inhalt...
Im Vergleich zur OLE DB-Methode ist die Die VBA+ADO-Methode muss flexibler sein. Darüber hinaus kann ADO verwendet werden, um direkt einen Link zur angegebenen Arbeitsmappe zu erstellen und zu öffnen, sodass in der SQL-Anweisung nicht der vollständige Name der Arbeitsmappe usw. angegeben werden muss.
Die Codereferenz lautet wie folgt:
Sub ADO_SQL() '适用于除2003版以外的高版本Excel Dim cnn As Object, rst As Object Dim strPath As String, strCnn As String, strSQL As String Dim i As Long Set cnn = CreateObject("adodb.connection") strPath = "D:\EH小学\学生表.xlsx" '指定工作簿 strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath cnn.Open strCnn '创建并打开到指定工作簿的链接 strSQL = "SELECT * FROM [成绩表$]" 'strSQL语句,查询成绩表的所有数据 Set rst = cnn.Execute(strSQL) '执行strSQL Cells.ClearContents For i = 0 To rst.Fields.Count - 1 Cells(1, i + 1) = rst.Fields(i).Name Next Range("a2").CopyFromRecordset rst cnn.Close Set cnn = Nothing End Su
Die 7. Zeile des obigen Codes gibt direkt den vollständigen Namen der Arbeitsmappe an, die verbunden werden muss, und es ist keine spezielle Verarbeitung in der SQL-Anweisung erforderlich.
但更多的情况是,ADO创建的链接是一个工作簿,需要获取的数据在另一个或多个工作簿,例如两个工作簿之间的数据查询统计。此时通常使用的代码如下
Sub ADO_SQL2() '适用于除2003版以外的高版本Excel Dim cnn As Object, rst As Object Dim strPath As String, strCnn As String, strSQL As String Dim i As Long Set cnn = CreateObject("adodb.connection") strPath = ThisWorkbook.FullName '代码所在工作簿的完整名称 strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPath cnn.Open strCnn '创建到代码所在工作簿的链接 strSQL = "SELECT * FROM [Excel 12.0;DATABASE=D:\EH小学\学生表.xlsm].[成绩表$]" Set rst = cnn.Execute(strSQL) '执行SQL Cells.ClearContents For i = 0 To rst.Fields.Count - 1 Cells(1, i + 1) = rst.Fields(i).Name Next Range("a2").CopyFromRecordset rst cnn.Close Set cnn = Nothing End Sub
代码中第7行创建了当前工作簿的链接,SQL语句中又指定了另外一个工作簿的链接。SQL语句如下
SELECT * FROM [Excel 12.0;DATABASE=D:\EH小学\学生表.xlsx].[成绩表$]
FROM指定表的字符串有两部分组成。第一个中括号中,Excel 12.0是目标工作簿的版本号,第2章时我们讲过,Excel 12.0适用于除了2003以外的所有Excel版本。DATABASE指定的是数据源工作簿的路径和名称。第2个中括号内是工作表名。两个中括号之间使用英文点号相连。
看起来似乎VBA+ADO方法的SQL语句比OLE DB法更复杂?确实如此,不过前者的功能也更强大。比如,它可以通过VBA对象的属性、方法,循环和判断语句等,有条件的筛选工作簿和工作表……相比之下,OLE DB中的SQL语句就是纯手工常量模式了。当然,更重要的是,前者不但可以查数据,还可以增改删数据,后者却只限于查。
相关学习推荐:excel教程
Das obige ist der detaillierte Inhalt vonFassen Sie die Verwendung von „Tabelle“ in Excel-SQL-Abfragen zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!