見出し画像

#26【Access】不要な行があるExcelのインポート

Excelユーザー必見!Accessクエリで業務効率を飛躍的に向上させる方法を、図解入りでわかりやすく解説中。
必ずチェックして、業務を効率化しよう!


エクセルのデータは、必ずしも最初のセル(A1セル)から始まっていないことがありますよね。
例えばタイトルが1行目に、年月日が2行目に、3行目から表が始まる、といった具合です。

ExcelやPower BIならPower Queryの「上位の行の削除」や「下位の行の削除」で簡単にこのわずらわしさを解消できます。
これは本当にすばらしい機能です。

こうしたデータをAccessにインポートする方法について、以下で解説します。

※通常のインポート方法はこちらから



1.結論(不可能です)

まず結論から言いますと、A1セルから始まらないExcelデータをAccessにそのままインポートするのは難しいです。
例えば、1行目にはタイトルがあり、2行目には部署名や担当者の名前があり、4行目から表が始まるといったExcelファイルは、簡単にはインポートできません。

正確に言えば、VBAと呼ばれるプログラムコードを使えば簡単にインポートできるのですが、このコンテンツでは難しいVBAの解説は省略します。
なぜなら、VBAを使わない方法で業務効率を向上させることがこのnoteの目的だからです。

では、どうにかして工夫できないか考えてみましょう。

2.アイディア1: 元のExcelを加工する

サンプルのExcelを用意しましたので、今回はこれを用いて解説します。
ダウンロードしてみましょう。


元のExcel

表の起点がB4から開始しています。

もし、この表をそのままAccessに取り込むと…

Accessテーブルは嫌な表になりました

例えば、列の見出しを「電話番号」、「郵便番号」…といった感じに左上から配置したいのに、「取引先名簿」、「フィールド2」…となってしまっています。
それに加えて、余分な空欄の列や行も存在して、表が途中から始まっているようです。


こんな完成イメージにしたいですよね↓

Excel表の部分だけが表示されました

意図したい表はこれですよね。
Excelを事前に整理しないと、きれいに取り込めないので工夫してみましょう。

そこで、簡単なアイディアをご紹介しますね。
これは非常にシンプル!
A1から始まる列にデータを整理し直すのです。
手軽な方法の一つです。

必要な部分だけ取り出して

別シートに張り付けます

A1起点になるように別シートにコピーします


「A1から始まるexl」というシート名にしました


Excelを保存します

「A1から始まるexl」シートをAccessにインポートすればいいので簡単ですよね


Accessを立ち上げます

「外部データ」タブの「新しいデータソース」アイコンをクリック。
「ファイルから」→「Excel」を選択してインポート元のExcelを参照します。


「参照」をクリック


対象のExcelを選択します


「開く」をクリック


「OK」をクリック


Sheet1が自動的に選択されている状態

Excelをインポートすると、すべてのSheetが表示されます。
今回はSheet2「A1から始まるexl」を取り込みます。
ここを間違わないように注意しましょう。


Sheet2の「A1から始まるexl」をクリック
「次へ」をクリック


「先頭行をフィールド名として使う」にチェック
「次へ」をクリック


各列のデータ型を確認します
列をクリックし、データ型が「短いテキスト」になっているか確認します
左の列からはじめて右列の「会社名」までチェックします

今回はすべての列のデータ型を「短いテキスト」に設定してみます。


「主キーを設定しない」を選択します
「次へ」をクリック


「完了」をクリック


Excelのシート名と同じ「A1から始まるexl」テーブルが出来ました


クリックして中身を見てみると期待通りのデータになります

期待した表(テーブル)が取り込めました


3.アイディア2:元データをそのままに工夫する

上の方法では、元のExcelの中身を手でいじる手間が結構かかりましたね。特に、同じフォーマットのファイルをAccessに定期的に取り込む場合、都度手作業が必要だと、正直、面倒くさいですよね。

そこで、もっとスマートなアイディアがあります。
Excel表の見出しは4行目にありますが、これが先頭行にあればAccessでも簡単に認識してくれるのです。

簡単な手順ですが、4行目の見出しをコピーして、先頭行にペーストするだけでOK。
これで取り込みも格段に楽になりますよ。

4行目を1行目にコピー

1行目にコピーした文字が不必要なので、背景と同じ白色にして無地にしてしまいましょう。


1行目の表見出しを白色にします

表示したくない1行目のセルを選択して、文字色を白色にします。


文字が白色になって背景と同化しました

表見出しを白色にしました。
B1セルは何もないように見えていますが、セル内には「電話番号」という文字データが格納されていることが分かります。

上書き保存してファイルを閉じます。
ここまでがExcelの作業です。

Accessへ取り込んでみましょう。

「外部データ」タブ、「新しいデータソース」アイコン-ファイルから-Excelを選択します。


対象のExcelを開く

先ほど保存したExcelを選択し、「開く」をクリック。


OKをクリック


Sheet1の「先頭が途中行から始まるExcel」を選択。「次へ」をクリック


「先頭行をフィールド名として使う」にチェックして「次へ」


不必要な列をインポートしない

ExcelではA列が空欄でしたね。
たまたま「取引先名簿」というタイトルが残っているため行名として表示されています。
この列を取り込みたくないので「取引先名簿」を選択し、「このフィールドをインポートしない」にチェックします。


「主キーを設定しない」を選択します


「完了」クリック


「閉じる」をクリック


Accessにテーブルとして取り込みました


テーブルを開いてみます

Excelの左列セルA1の「取引先名簿」がとりこまれていないことが分かります。

テーブルの上2行は実データがありません。
これらは不要なので、手作業でサクッと取り除いてみましょう。


上2行を選択します

不必要な行を選択してDeleteキーを押します

「はい」をクリック


きれいな表に整いました!

この取り込み方法は別の回で説明する「リンク」機能を使う場合、元のExcelが加筆・修正されたとしてもAccessテーブルは最新の状態が反映されます。

Excel表の作成者が別の担当の場合は、1行目に「隠し項目」を入れていただくことを理解いただくことが必要となりますね。


今回は2つの方法をお伝えしましたが、もしあなたがVBAを使わずにA1以外から始まるExcelファイルを取り込む方法をご存じであれば、ぜひコメントでシェアしてくださいね!


Excelのリンク方法はこちらから



現場で使えるAccess基本クエリ22選をまとめました。
Excelでは難しいデータ抽出の基本になります。
ぜひともご活用ください。


この記事が気に入ったらサポートをしてみませんか?