検索
ホームページトピックexcelExcel SQL クエリでの「テーブル」の使用法の概要

この記事では、excel に関する関連知識を提供します。主に、リージョン テーブル、クロスワークブック テーブルなど、SQL クエリでのテーブルの使用方法を紹介します。皆様のお役に立てれば幸いです。

Excel SQL クエリでの「テーブル」の使用法の概要

関連する学習の推奨事項: excel チュートリアル

今日は、SQL ステートメント内の Excel テーブルについて説明します。

1. テーブルへの領域

Excel ワークシートとデータベース データ テーブルには多くの違いがあります。最も重要な点は、データベース データ テーブルは行と列で構成されるものとして理解できるのに対し、データベース データ テーブルは行と列で構成されるものとして理解できることです。 Excel ワークシートは一連のセルで構成されており、これらのセルには A1 または R1C1 という固有のアドレス表現方法があり、A2:H8 のようにデータが接続されたセル範囲を形成することもできます。

それでは、Excel ワークシートの一部のみを計算する必要がある場合、それを SQL でどのように表現すればよいのでしょうか?

この種の問題は非常に一般的です。

たとえば、多くの人は Excel のタイトル行が表の 1 行目ではなく 2 行目にあります...

下図に示すように

Excel SQL クエリでの「テーブル」の使用法の概要

現時点では、Excel ワークシート全体ではなく、フィールド名を使用してデータを処理しやすくするために、列 A2:F のセル範囲を計算したいと考えています...

別の例、a テーブルの内側と外側に 2 つ以上の「テーブル」があります... この文は何を意味しますか?

下の図を参照してください

Excel SQL クエリでの「テーブル」の使用法の概要

図に示されているテーブルには、「教師テーブル」と「生徒テーブル」の両方があります。 SQL で A2:D8 の教師テーブル データを参照および計算したいだけです...

... Excel の SQL は、実際にはワークシートのセル範囲を「テーブル」として使用することをサポートしています。

上の図に示されている問題の場合、SQL は次のように記述できます:

SELECT 姓名,学科 FROM [数据表$A2:D8]

クエリの結果は次のとおりです:

Excel SQL クエリでの「テーブル」の使用法の概要

# #最初のケースでは、データがセル A2 で始まることはわかっていますが、列 F のどのセルが終了するかはわかりません。SQL は次のように記述できます。

SELECT 姓名,爱好 FROM [学生表$A2:F]

さらに、SQL リファレンスが必要な場合は、テーブルの列 D:G 全体のデータを計算するには、SQL を次のように記述できます。

SELECT * FROM [学生表$D:G]

Excel ワークシート領域、つまりワークシート名、ドル記号を表現する上記の方法を要約します。 $、相対参照状態のセル アドレス、そして最後に角括弧で囲まれます。

ただ、姜子。

このセクションのヒント:


[Student table $A2:F]、このステートメントは、最後のデータが含まれる列 A2 から列 F までのセル範囲を参照できると言います。存在しますが、これには非自己接続状態という限定された前提条件が適用されます。いわゆる自己結合とは、SQL を使用してワークブック自体をリンクする必要があることを指します。自己リンク状態では、A2:F の最大表現は A2:F65536 行ですが、この時に必要な参照行が 65536 行を超える場合は、全テーブルモードを使用してください。

2. クロスワークブック テーブル

よく知られている問題は、いくつかのルックアップ参照関数 (VLOOKUP など) を除いて、クロスワークブック データを処理するときに Excel 関数が非常に疲れることです。 )、ほとんどの関数は、計算して使用する前に、関連するワークブックを開く必要があります。

はい、VLOOKUP 関数は関連するブックを開く必要がなく、複数のブック間で使用できます。また、VLOOKUP 数式を作成した後、参照しているブックを削除しても、VLOOKUP 関数は機能しません。計算。これは、数式が配置されているブック内の関連データがキャッシュされているためですが、VLOOKUP モードは関数の複雑な入れ子をサポートしていません... 指を鳴らしてください。ご興味があれば、別の日に別の機会に個別にお話します。 。

...ああ、SQL の話に戻ります~~

...前に共有した SQL ステートメントはすべて、現在のワークブックのテーブルを処理するために使用されます。は他のブックにあります。SQL を表現するにはどうすればよいですか?

たとえば、「生徒テーブル」の「成績テーブル」のデータをすべて取得します。感心させないでください。

これが OLE DB メソッドの場合 (このメソッドについては、このシリーズのチュートリアルの第 1 章を参照してください)、SQL ステートメントは次のとおりです。

SELECT * FROM [D:\EH小学\学生表.xlsx].[成绩表$]

FROM の後に指定されたテーブル文字列は、2 つの文字列で構成されます。最初の角括弧の内側は、指定されたワークブックのストレージ パスにサフィックスを付けた完全なワークブック名​​です。最後の角括弧の内側はワークシート名で、2 つの角括弧はピリオド (.) で接続されています。

VBA ADO を通じて SQL ステートメントを使用している場合...

警告の前にある本棚をノックしてください: VBA の基礎が不十分な子供用の靴、次の内容はスキップしてください...

OLE DB メソッドと比較すると、VBA ADO メソッドは非常に柔軟です。ADO を使用して、指定されたブックへのリンクを直接作成して開くことができるため、SQL ステートメントでブックの完全な名前を指定する必要はありません。 、など。

コード リファレンスは次のとおりです。

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

上記のコードの 7 行目は、接続する必要があるブックの完全な名前を直接指定しており、 SQL ステートメント。

但更多的情况是,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教程

以上がExcel SQL クエリでの「テーブル」の使用法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はExcel Homeで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Excelの式の中央値 - 実用的な例Excelの式の中央値 - 実用的な例Apr 11, 2025 pm 12:08 PM

このチュートリアルでは、中央値関数を使用してExcelの数値データの中央値を計算する方法について説明します。 中央傾向の重要な尺度である中央値は、データセットの中央値を識別し、中央の傾向のより堅牢な表現を提供します

式の例を備えたGoogleスプレッドシートcountif機能式の例を備えたGoogleスプレッドシートcountif機能Apr 11, 2025 pm 12:03 PM

マスターグーグルシートcountif:包括的なガイド このガイドでは、Googleシートの多用途のCountif機能を調査し、単純なセルカウントを超えてそのアプリケーションを実証しています。 正確な一致や部分的な一致から漢までのさまざまなシナリオをカバーします

Excel共有ワークブック:複数のユーザーのExcelファイルを共有する方法Excel共有ワークブック:複数のユーザーのExcelファイルを共有する方法Apr 11, 2025 am 11:58 AM

このチュートリアルは、さまざまな方法、アクセス制御、競合解決をカバーするExcelワークブックを共有するための包括的なガイドを提供します。 Modern Excelバージョン(2010、2013、2016、およびその後)共同編集を簡素化し、mの必要性を排除します

Excelをjpgに変換する方法 -  .xlsまたは.xlsxを画像ファイルとして保存しますExcelをjpgに変換する方法 - .xlsまたは.xlsxを画像ファイルとして保存しますApr 11, 2025 am 11:31 AM

このチュートリアルでは、.xlsファイルを.jpg画像に変換するためのさまざまな方法を調査し、ビルトインWindowsツールと無料のオンラインコンバーターの両方を網羅しています。 プレゼンテーションを作成したり、スプレッドシートデータを安全に共有したり、ドキュメントを設計したりする必要がありますか?ヨーヨーを変換します

名前と名前付き範囲:フォーミュラで定義および使用する方法名前と名前付き範囲:フォーミュラで定義および使用する方法Apr 11, 2025 am 11:13 AM

このチュートリアルは、Excel名の機能を明確にし、セル、範囲、定数、または式の名前を定義する方法を示します。 また、定義された名前の編集、フィルタリング、削除もカバーしています。 Excelの名前は、信じられないほど便利ですが、しばしばOverloです

標準偏差Excel:関数と式の例標準偏差Excel:関数と式の例Apr 11, 2025 am 11:01 AM

このチュートリアルは、標準偏差と平均の標準誤差の区別を明確にし、標準偏差計算のための最適なExcel関数を導きます。 記述統計では、平均および標準偏差は内在的です

Excelの平方根:SQRT関数およびその他の方法Excelの平方根:SQRT関数およびその他の方法Apr 11, 2025 am 10:34 AM

このExcelチュートリアルでは、正方形の根とNth Rootsを計算する方法を示しています。 平方根を見つけることは一般的な数学的操作であり、Excelはいくつかの方法を提供します。 Excelの正方形の根を計算する方法: SQRT関数を使用します

Googleシートの基本:Googleスプレッドシートでの作業方法を学ぶGoogleシートの基本:Googleスプレッドシートでの作業方法を学ぶApr 11, 2025 am 10:23 AM

Googleシートのパワーのロックを解除:初心者向けガイド このチュートリアルでは、MS Excelに代わる強力で多目的な代替品であるGoogleシートの基礎を紹介します。 スプレッドシートを簡単に管理し、重要な機能を活用し、コラボレーションする方法を学ぶ

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!