Automatic Measurement Systems
Excelでデータベース
概要
Excelのシートをテーブルとして使用しSQLを実行するツールです。
Excel 2007、2016(2010、2013では未確認)で実行できます。
Simple Measureがセットアップされていなくても実行できます。
テーブルの加工をExcelの機能をそのまま利用して行えるので、データベースを使うより便利といっても過言ではありません。
SQL Serverを使うとき、Excelで元データを作成し、そのデータをインポートする作業を頻繁に行っていましたが、最近、簡単な処理はこれ一本で行っています。
ダウンロード
繰り返し行う測定処理
1つの測定結果を取得するとき、複数の操作が必要になる場合でも簡単にMeasureテーブルを作成できます。
例えば、次のような試験を繰り返し行う場合、
1 |
発振器に周波数を設定 |
2 |
出力が安定するまで待つ |
3 |
測定 |
この操作を実際に記述すると
MeasureId |
Label |
Method |
Device |
Parameter |
Parameter2 |
ReportId |
Description |
1 |
10Hz |
Write |
Osc |
Freq 10 |
発振器に周波数設定 |
||
2 |
10Hz |
Write |
Wait |
1000 |
出力が安定するまで待つ |
||
3 |
10Hz |
Read |
Dmm |
:Measure? |
|
|
測定 |
4 |
20Hz |
Write |
Osc |
Freq 20 |
発振器に周波数設定 |
||
5 |
20Hz |
Write |
Wait |
1000 |
出力が安定するまで待つ |
||
6 |
20Hz |
Read |
Dmm |
:Measure? |
|
|
測定 |
7 |
50Hz |
Write |
Osc |
Freq 50 |
発振器に周波数設定 |
||
8 |
50Hz |
Write |
Wait |
1000 |
出力が安定するまで待つ |
||
9 |
50Hz |
Read |
Dmm |
:Measure? |
|
|
測定 |
… |
… |
… |
… |
… |
… |
… |
… |
測定する周波数が少なければコピー&ペーストでもそれほど手間ではありませんが、100ポイントともなると結構な手間となります。
そこで、周波数シート「A」と、操作シート「B」を作成し、それらのすべての組み合わせを出力するために、SQL Toolを使用します。
それぞれの最初の列はAIdとBIdにしてください。(SQLシートのSQL文を変更すれば任意の名前に変更できます。)
周波数テーブル「シートA」
AId |
Freq |
1 |
10 |
2 |
20 |
3 |
50 |
4 |
100 |
操作テーブル「シートB」
BId |
Label |
Method |
Device |
Parameter |
Parameter2 |
ReportId |
Description |
1 |
Write |
Osc |
Freq |
||||
2 |
Write |
Wait |
1000 |
||||
3 |
Read |
Dmm |
:Measure? |
注意点として、シートのデータを変更した場合、データの最終行以降は行削除によってすべてのデータをクリアする必要があります。DELキーによる削除では空白のデータとして処理されます。列に対しても同様に列削除する必要があります。
周波数シートAと操作シートBの組み合わせのSQLを実行するとSQLシートに結果が出力されます。
SQLを実行します。SQLシートの[SQL実行]ボタンを押します。
実行結果「シートSQL」
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
Aid |
Freq |
Bid |
Label |
Method |
Device |
Parameter |
Parameter2 |
ReportId |
Description |
3 |
1 |
10 |
1 |
Write |
Osc |
Freq |
||||
4 |
1 |
10 |
2 |
Write |
Wait |
1000 |
||||
5 |
1 |
10 |
3 |
Write |
Dmm |
:Measure |
||||
6 |
2 |
20 |
1 |
Write |
Osc |
Freq |
||||
7 |
2 |
20 |
2 |
Write |
Wait |
1000 |
||||
8 |
2 |
20 |
3 |
Write |
Dmm |
:Measure |
||||
9 |
3 |
50 |
1 |
Write |
Osc |
Freq |
||||
10 |
3 |
50 |
2 |
Write |
Wait |
1000 |
||||
11 |
3 |
50 |
3 |
Write |
Dmm |
:Measure |
||||
12 |
4 |
100 |
1 |
Write |
Osc |
Freq |
||||
13 |
4 |
100 |
2 |
Write |
Wait |
1000 |
||||
14 |
4 |
100 |
3 |
Write |
Dmm |
:Measure |
このままでは測定できないので加工します。
Excelのオートフィルタを使用してParameterの値が「Freq」のセルのみを、式「="Freq "&B3」の式を設定してFreq 10、以下同様にFreq 20、Freq 50・・・に変更します。
オートフィルタで「Freq」のみを選択↓
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
Aid |
Freq |
Bid |
Label |
Method |
Device |
Parameter |
Parameter2 |
ReportId |
Description |
3 |
1 |
10 |
1 |
Write |
Osc |
Freq |
||||
6 |
2 |
20 |
1 |
Write |
Osc |
Freq |
||||
9 |
3 |
50 |
1 |
Write |
Osc |
Freq |
||||
12 |
4 |
100 |
1 |
Write |
Osc |
Freq |
式を設定し、オートフィルタを解除した結果は次のようになります。
塗りつぶされた部分をコピーしてMeasureシートの同じフィールド位置に「値で貼り付け」します。
|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
2 |
Aid |
Freq |
Bid |
Label |
Method |
Device |
Parameter |
Parameter2 |
ReportId |
Description |
3 |
1 |
10 |
1 |
Write |
Osc |
Freq 10 |
||||
4 |
1 |
10 |
2 |
Write |
Wait |
1000 |
||||
5 |
1 |
10 |
3 |
Write |
Dmm |
:Measure |
||||
6 |
2 |
20 |
1 |
Write |
Osc |
Freq 20 |
||||
7 |
2 |
20 |
2 |
Write |
Wait |
1000 |
||||
8 |
2 |
20 |
3 |
Write |
Dmm |
:Measure |
||||
9 |
3 |
50 |
1 |
Write |
Osc |
Freq 50 |
||||
10 |
3 |
50 |
2 |
Write |
Wait |
1000 |
||||
11 |
3 |
50 |
3 |
Write |
Dmm |
:Measure |
||||
12 |
4 |
100 |
1 |
Write |
Osc |
Freq 100 |
||||
13 |
4 |
100 |
2 |
Write |
Wait |
1000 |
||||
14 |
4 |
100 |
3 |
Write |
Dmm |
:Measure |
SQL文を変更すればいろいろな処理が可能になります。
このデータベースはAccessで使用しているACE(Access Connectivity Engine)なので、SQL ServerやORACLEのような使い方はできませんが、VLOOKUPでこねくり回すよりは、はるかに簡素で安全です。
SQL Toolの初期値のSQLは以下のようになります。
Excelのシート(テーブル) 名はSQL文の中では「[シート名+$]」となります。シート「A」は「[A$]」と記述します。
このとき [ ] は省略できません。
From句の [A$] , [B$] は [A$] Outer Join [B$] と同じです。ACEではOuter Join は ‘,’ となります。
Select [A$].*, [B$].*
From [A$],[B$]
Order
by [A$].Aid, [B$].Bid