Automatic Measurement Systems

Excelでデータベース

 

概要

 

Excelのシートをテーブルとして使用しSQLを実行するツールです。

Excel 2007201620102013では未確認)で実行できます。

Simple Measureがセットアップされていなくても実行できます。

 

テーブルの加工をExcelの機能をそのまま利用して行えるので、データベースを使うより便利といっても過言ではありません。

SQL Serverを使うとき、Excelで元データを作成し、そのデータをインポートする作業を頻繁に行っていましたが、最近、簡単な処理はこれ一本で行っています。

 

ダウンロード

 

SQLデータベー(SQL Tool)

 

 

繰り返し行う測定処理

1つの測定結果を取得するとき、複数の操作が必要になる場合でも簡単にMeasureテーブルを作成できます。

例えば、次のような試験を繰り返し行う場合、

 

発振器に周波数を設定

出力が安定するまで待つ

測定

 

この操作を実際に記述すると

 

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を使用します。

それぞれの最初の列はAIdBIdにしてください。(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

1

10

1

Write

Osc

Freq

1

10

2

Write

Wait

1000

1

10

3

Write

Dmm

:Measure

2

20

1

Write

Osc

Freq

2

20

2

Write

Wait

1000

2

20

3

Write

Dmm

:Measure

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 20Freq 50・・・に変更します。

オートフィルタで「Freq」のみを選択↓

 

A

B

C

D

E

F

G

H

I

J

2

Aid

Freq

Bid

Label

Method

Device

Parameter

Parameter2

ReportId

Description

1

10

1

Write

Osc

Freq

2

20

1

Write

Osc

Freq

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

1

10

1

Write

Osc

Freq 10

1

10

2

Write

Wait

1000

1

10

3

Write

Dmm

:Measure

2

20

1

Write

Osc

Freq 20

2

20

2

Write

Wait

1000

2

20

3

Write

Dmm

:Measure

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 ServerORACLEのような使い方はできませんが、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