■DATA横変換
・Excelの縦に並んだデータを横に変換する。
<機能概要>
・DBから任意のSQLでデータ抽出が可能
ORACLE
Microsft SQLServer
ACCESS(MDB、ACCDB)
EXCEL:(xls、xlsx)
CSV:(CSV、TXT)
・日程表の日付範囲指定可能
・表示日程を、暦日とデータ内日付のみ、との選択可能
・横並びのヘッダーは文字データでも可能
・データ部分は、データの個数表示でも可能
<操作方法>
①DB設定ボタン
データベースとの接続方法を指定
ア:接続方法を登録してある中から指定する。
イ:接続方法設定する。
・システム指定:ドロップダウンリストから選択
※実行するには、それぞれのドライバがインストールされている必要があります。
ORACLE:ORACLE製OraOLEDB.Oracle
MS_ORA:Microsoft製MSDAORA
MSSQL:Microsft SQLServer (SQLOLEDB)
ACCESS:MDBファイル (Microsoft.Jet.OLEDB.4.0)
Access:ACCDBファイル(Microsoft.ACE.OLEDB.12.0)
EXCEL2007:xlsxファイルExcel2007以降 (Microsoft.ACE.OLEDB.12.0/Excel 12.0)
EXCEL2007_U:xlsxファイル Excel2007以降更新処理(Microsoft.ACE.OLEDB.12.0/Excel 12.0)
EXCEL:xlsファイルExcel2003以前(Microsoft.Jet.OLEDB.4.0/Excel 8.0)
EXCEL_U:xlsファイルExcel2003以前更新処理(Microsoft.Jet.OLEDB.4.0/Excel 8.0)
CSV:CSV、TXTファイル(Microsoft Text Driver (*.txt; *.csv))
ORA_INST:Oracle in instantclientのドライバ名を指定
ODBC:ODCBのドライバ名を指定
DSN:DSNサーバ名を指定
※ここでは、Excel、Access、CSV、TXTファイルの説明をします。
・Excel、Accessの場合
>データベース名に対象ファイルを指定
・CSV、TXTの場合
>データベース名に対象ファイルの場所を指定する。
>「ヘッダーラベルあり(Excel,Csv)」:先頭行の名称がある場合はチェックを付ける
ウ、接続テストボタン:データベースへの接続可否の確認が可能
エ、追加、修正、削除ボタン:接続情報の追加、チェックを付けた接続情報の修正、削除が可能
オ、戻るボタン:接続情報画面を閉じる。
②データ抽出
・SQLシートに記述されているSQLを実行し結果をSheet1に書き出します。
※任意に書き換えて下さい。
・現状は③記述されているデータで抽出処理が実行されます。
ア:イとウを合わせて実行されるSQLとしている。
イ:select文を記述
>Excelの場合:テーブル名は〔シート名$〕とする。
例select * from [売上データ$]
例select A.アイテムコード, A.受注注番, B.受注注番from [sheet1$] A,[sheet2$] B
WHERE A.アイテムコード=B.アイテムコード
>CSV,TXTの場合:テーブル名はファイル名とする。
例select * from売上データ.csv
例select IT.CODE,HE.NAME from TxITEM.CSV as IT,TxHEAD.CSV as HE
where IT.CODE=HE.CODE
ウ:抽出文を記述
・現状は、メニューの③の指示と連動、指示が無ければ表示されない構文になっている
1行目(B4)=IF(メニュー!C3<>""," Where売上日Like '" &メニュー!C3 & "%' ","")
2行目(B5)=IF(メニュー!D3<>"",IF(メニュー!C3<>""," AND商品名Like '%" & メニュー!D3 & "%' ", " WHERE商品名Like '" &メニュー!D3 & "%' "),"")
3行目(B6)=IF(メニュー!E3<>"",IF(B4&B5<>""," AND得意先CD Like '" & メニュー!E3 & "%' "," WHERE得意先CD Like '" &メニュー!E3 & "%' "),"")
エ、ソート文
・ここでは品目CD,顧客CD順の指定
➃、データ編集ボタン
・出力フォーマットの内容でsheett1のデータをSheet2へ出力
⑤出力フォーマット
1、キー項目
・日程データを集計するキー項目に 1 をセット
※キー項目でデータがソートされている必要があります。
2、出力ヘッダー
・出力Sheet2の項目名
・横変換:対象列、タイプに横変換情報を記述
3,対象列
・対象データSheet1のセル列指定
・タイプが固定の場合 : 出力する文字を指定
・タイプが式の場合 : [ ]内に式を、出力シートの2行目に記述する形で記入
例 連番表示 [=MINA(A1)+1]
└→1列目は文字のためMINAでは0が返る
・タイプが横xx[XX]の場合 : ヘッダー出力セル列[データ出力セル列] を指定
・タイプが横合計の場合 : [ ]内に集計式を、出力シートの2行目に記述する形で記入
但し最終セルは ? とする 例 [=SUM(D2:?)]
4.タイプ:出力タイプ
・文字:そのまま出力
・固定:対象列に指定された文字を出力
・数値:数値として出力
・日付:yyyy/mm/dd 変換
・MID(位置,長さ):抽出文字位置
・式:[式]の形式で対象列へ記述する
1行目はヘッダーになるので、2行行目に記述する形でセル位置を記述する。
・横合計:横に並べたデータの集計値出力
・横<日付|文字>タイプ[文字|数値|個数] : この指定は最終パラメタとすること
>日付タイプの種類
日付;表示形式を"yyyy/mm/dd"にする。
日付2;表示形式を"mm/dd"にする。
日付3;表示形式を"dd"にする。
>[ ]内の指定内容によるデータの処理
文字 : 改行して結合
数値 : 合計
個数 : データの個数
例 横日付2[文字]
例 横文字[個数]
5、対象開始行
・読み込んだデータの、出力対象スタート位置を指定する。
・無指定は1行目、ヘッダーがある場合は 2 を指定する。
6、対象終了行
・読み込んだデータの、出力対象最終位置を指定する。
・無指定は最終行
7.日程開始日
・日程表のスタート日を指定する。
・無指定はデータ内の最小値をスタート日
8.日程終了日
・日程表のエンド日を指定する。
・無指定はデータ内の最大値をエンド日
9.日程表区分
・1 : データに存在する日付けのみで日程作成
・2 : カレンダーの日付で日程作成
■編集結果
>Sheet1
>sheett2
■編集例
> 顧客別数量編集
>顧客別件数編集
■DATA横変換のダウンロード DATA横変換
※ユーザーフォームにリストビューを使っているので、設定をいないと動かない場合があるかも???
■ダウンロードは こちらのページ をご覧ください。
※コメント投稿者のブログIDはブログ作成者のみに通知されます