質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

2022閲覧

不良解析のデータベースについて

yuujiMotoki

総合スコア90

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/03/02 00:36

とある商品開発部門にいて、不良解析業務をしています。
サンプル履歴について、データベースを作成して業務の効率化を図りたいと思っています。

1)測定データ
測定結果を吐き出す装置から、2種類のデータが出てきます。

ひとつは直流抵抗を測るもの → サンプルのバーコード、G/NGモードなどの結果 → CSVファイル

もうひとつはSパラメータ → サンプルのバーコード、G/NGモード、Sパラ波形(数値データ)→ csvファイル

2)処理

csvファイルはバーコードと、エラー情報のある列のみの抽出

Sパラメータは2次元配列になっており、膨大なデータなので、グラフ化して画像をjpg化したい

これらはすべてバーコードで管理されているが、測定データは測定エラーがあるとバーコードが欠落するし、複数測定すると重複する。

これらをまず論理和をとって、バーコードの列をキーIDとする。

アプリケーション

これらをデータベース上に抽出する
抽出したデータには、分析や解析結果が張り付けられる

フロントエンド

1)WEBアプリ立ち上げ
2)html+phpでデータを読み込む
3)phpでデータベースに書き込む
4)データベースへの問い合わせも、もちろんPHPで

・・・でも、PHP使ったことがない

将来的には、ruby+rail、django+python、javaなんてのもありうる。。。

現在はEXCEL+VBAで検討中

なんとかなりませんかねえ・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kunihiro_Narita

2018/03/02 08:06

要件としての体裁をなしていません。曖昧で抽象的な用語ではなく、具体的に記述すると良いでしょう。 例えば「膨大なデータ」とは、1MB?1GB?1TB?1EB?。分析や解析の演算とはどんなもの?パソコンで1秒でおわる程度?1時間?GPGPUやFPGAを駆使しても数日?特別な演算ライブラリとか不要なの?。データ量によって、演算内容によって、適用できる技術が異なりますよね。何もかもが曖昧で、抽象的で、適用する技術を検討する段階に至ってないです。
yuujiMotoki

2018/03/03 18:52

データは測定器が吐き出すのですが、EXCELシートに読み込んだCSVは縦は300個、横が4000個ぐらいのデータです。このデータが2枚ある感じです。ただ単一だけでファイル化するのはいいのですが、全体を見渡すと複数のファイルを一望できるようなものを理想としています。ファイルの置き場所も決まっていなかったりするので、まずそこを定める必要があります。
guest

回答4

0

プログラミング言語の選択によって作りやすい作りにくいの差は出るでしょうけど、
その前に
どのようなデータが有り、データがそれぞれどんな精度で存在し、
どのようにデータを集め、どのように処理をすれば、期待する結果が得られるかという
アルゴリズムを第三者が見てもわかるくらいに明瞭化することが大事です。

一発で報告書レベルまでアウトプットできたら楽ですが、
場合によっては段階わけをして得意分野のつなぎ合わせで組み合わせたほうが
融通が利くこともあります。

納期(もしくは立ち上げ)まで、
どんな段取りで進めるか、
プログラミング言語の習得にどれだけ時間を割けるか、
アウトソースできる部分はないか、
など考えていく上でも、
作りたいもののイメージが固まってないと先に進めません。
作りたいもののイメージがあり、それを実現するアルゴリズムが確立して、
やっと具体的な設計に入っていけると思います。

投稿2018/03/02 01:11

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuujiMotoki

2018/03/03 18:46

excelのカット&ペーストレベルでは、 アウトプットしたいもののイメージは完全にできている状況です。 ただ別の質問にも書いているのですが、エクセル+VBAのゴリゴリの自分が ・エクセル+VBAから別の開発方法に行く時間がない(やりたいこと検討の前に、普通のコーディング自体に指が進めない) ・プログラム言語の書籍を読む時間ばかりで、パソコンの前に座ってコードを打ち込んだり、事例を見たりする時間がさけない といった感じです。 あまり職場ではソフト開発に時間はさけず、むしろ手作業で1時間ぐらいかかると見込んだ場合に、それと見合う時間でマクロ化していて、1回目の作業時間で工数2倍(2時間)で作業完了、2回目からは瞬時になって追い抜く感じです。とりあえず作業の反復性を重視して、マクロ職人になるか作業だけの人になるのかを切り替えています
guest

0

一番単純に出来そうなのは、単に2つのcsvからsqlサーバー上のテーブルに順次追加するだけの方法があります。sqlサーバーには、これら2つのテーブルを内部結合でjoinしたビューを用意しておきます。
後は、EXCELのPowerPivotからsqlサーバーに接続して、このビューを取り込みピボットテーブルを作ってグラフを作成します。
PowerPivotは、EXCELの100万行の制限を超えて処理できるので、大量のデータ処理が可能となります。
私は、acessで250万行のピボット解析ができました。sqlサーバーであれば、ネットを介した接続も可能なので利用できるかと思います。ただし、ネットワーク負荷がたかくなると思いますので注意必要かと思います。
簡単なので一度試してはいかがでしょうか?なお、PowerPivotは、強力なのですがマクロなどからの使い方がわかりません。
どなたか、ご存知の方はおられますか?

投稿2018/03/06 23:58

diracpaul

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

記入された情報から解決策を見つけるのは難しいので参考までに。
目的が不良解析でしたら解析手順等は同じではなく自動化はかなり難しいと推測します。(本質は不良を減らしすことなので)
今の処理のなかで最初に困っている「データの紐づけ」を楽にすればデータベースとして記録保存が簡単にできます。
結果を吐き出す装置側にデータが1製品と対応するように改良するのが重要だと思われます。たとえば不良のリストを同時に排出して出力されるデータのファイル名を記載すれば(重複しないように)簡単に見ることが可能です。リストに測定番号、時間等も入れておけば完全測定か不完全測定なのかも一目で分かるようになります。あと解析に不要なデータは排出させないことも大事かも。
測定機側の改造はプロの方が行っているので簡単に仕様変更できます(出力様式を変えるだけなので)

投稿2018/03/05 00:39

RED_CAT

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

データベースということですが、サーバを立ち上げてなどとなるとそれなりに大変です。
質問文を眺めての印象としては、python+sqliteあたりが適当ではないだろうかと思いました。

http://iatlex.com/linux/first_sqlite/

投稿2018/03/02 04:47

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuujiMotoki

2018/03/03 18:36

ありがとうございます。 sqliteが良いかどうかは、まだデータベースに触ったことがなくて 現在はmysqlの本を、片っ端から読み始めています。 PYTHONの本を見ていると、mongoDBなるものも気になります。 SQLというのと、ファイルから配列にデータを読み込むのと どちらがいいのでしょうか? いまいちSQLの利点がよくわからないのです。
KojiDoi

2018/03/03 18:51

> SQLというのと、ファイルから配列にデータを読み込むのと その「データベース」が、作ろうとしているプログラムの中だけで必要で、そのプログラムが終了したらそのまま捨てていいのであれば、「配列にデータを読み込む」でいいです。 sqlにしておけばデータをプログラムの外にファイルとして保存することになります。再利用が楽になります。また、sql言語を活用して、より複雑なデータの検索や抽出が可能になります。 mysqlになると、かなり本格的なデータベースになります。別途mysqlサーバを走らせることになるので、セットアップにはそれなりの知識がいるしsqliteよりはだいぶん手間がかかります。そして、質問を読む限りではそこの勉強に時間をかけるほどの必然性はないのではないかとの印象を受けました。まだsqlの利点がピンとこないのであれば、試してみるならmysqlよりはsqliteのような気がします。 sqliteについては、以下に簡単な紹介がありました。 http://www.cpa-lab.com/tech/046
yuujiMotoki

2018/03/03 19:00

>Mysqlサーバーを走らせる 最近mySQLを触っていて、その事実を知りました(お恥かしながら) sqliteでの保存というのは、変換済みデータの保存になりますか? 私的にはアウトプットはxlsファイルに吐き出すか、別途で利便性のいいビューアーを作って多数のファイルを眺められるようなものを作るかで、最終的な構造が決まってくるような気がします
KojiDoi

2018/03/03 19:43

> sqliteでの保存というのは、変換済みデータの保存になりますか? xlsファイルの代わりにデータベースファイルが一つ出来上がるというイメージでよいと思います。 xlsの中だけでなんとかなりそうなら、それでいくのも選択肢でしょうね。ただ、1万行とかになるとファイルを読みこむだけでも時間がかかりますし、vbaで二次処理となると試行錯誤するのも大変ですよね。今現在あなたがどのていどvbaを自分のものにしておられるのかにもよるのですが、こういう質問をしているということは、何らかの限界を感じているのですよね? 代替ツールとして、pythonは検討に値する選択肢だと思います。いきなり全面的には難しいでしょうが、試しに処理の一部を置き換えてみることに挑戦してみてはどうでしょう。なお、そのデータベースを公開するとか他の人と共有するというのでないかぎり、PHPとかdjangoとかはとりあえず忘れていいような気がします。
yuujiMotoki

2018/03/05 00:21

>xlsファイルの代わりにデータベースファイルが一つ出来上がるというイメージでよいと思います ありがとうございます。データベースのファイルという部分で、かなり引っかかっていたのですが、 MySQLのようにサーバーを立てて起動するタイプは、1個の大きなファイルに全てが保存されるものでしょうか?XLSベースでのもう一つの利点は、ファイル単位で名前が明確であり、使い慣れているエクスプローラでの閲覧、コピーなどが容易で分かりやすいです。大きなDBとなると、ファイルは大きな括りで1個になってしまうのか、ファイル単体の保管場所自体のURL(\ドライブ\保存先\ファイル名)を、フィールドに納めることになるのでしょうか? 他の質問の方からも、python>>VBAで等価ではないことを伺いました。ライブラリによってはC並みのスピードが得られることも知りました。VBAにおいても2次元配列のオブジェクト化、リスト変数のようなeachループ、メソドなどを駆使すれば、高速化も出来ないことはないように思います(私のスキルはオブジェクト指向処理自体を取り入れていないことが問題なのかもしれません) プログラムの実行速度において、同じような組み方をした場合に、VBAとPYTHONはスクリプト言語としては、同じ処理速度になるのでしょうか? それともライブラリの充実度的にpythonの方が早くなるという感じでしょうか?あとexcelベースのVBAと、VB.NETというのは機能的に、どれぐらい違ってくるものでしょうか?(現時点では思ったことをサクッと短期間で書ききる。つまり余り本業に差し支えない程度の時間で動かせるものを作る)というのが最重要ポイントになっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問