入ったばかりの会社で、データがあるにも関わらず、紙で出力して電卓で計算して伝票を手書きしているので、少しでも効率化できたらと思い、やってみているのですが、力不足で困っています。
文字と数字の文字列のデータを文字(業者)と数値(外注単価)に分けようと、クエリでRight関数、Left関数、Mid関数、InStr関数とIIf文を使用してやってみたのですが、文字の部分も数値の部分も必ずしも決まった数ではないのと文字と数値の間に何か入っているわけでもないので、困り果てています。
何か良い方法はないでしょうか。何かヒントでもいただけるとありがたいです。
よろしくお願いいたします。
処理したいデータ例を提示してもらえませんか。
業者名はもちろん仮名でいいので。
ありがとうございます。
売上データの中に 規格・型番フィールドがあります。その規格・型番フィールドのデータの中に外注単価が含まれています。
以下のようなデータがあります。空白データもあります。微妙に文字列にブランクが入っているものもあります。
AR→1.50、AR→1.5、AR2.0、N 2.0、N 1.50、TS→全、ニレジ→全、中尾ー>全、フジワラ→全
AR→1.50
なら、AR→ という文字列データと 1.5 という数値データに分割ということですか。
TS→全 は数値はないですが、どうしますか。
言葉足らずで申し訳ありません。
そのフィールドにしか外注単価(1.50とか2.0とか)がないので、数値のみ抽出したいです。
標準の関数だけでやるのは難しいので、VBAでユーザー定義関数を作成してそれを利用することになりますね。
標準モジュールに下記の関数をコピーして貼り付けてください。
クエリのフィールド欄に下記の式を設定します。
以上です。
データに数値が含まれない場合は、0 を返すようになってます。
hatena様
VBAは全く分からないのですが、仰る通りにしたら、抽出したいものが返りました。
ありがとうございます。助かりました。
自分でもう少しできるようしたいのですが、VBAは独学では難しいでしょうか。
ACCESSの関数を使ってやるなら
その1
その2
既存データの整形をしたいってだけならExcelでごりごりやるのが簡単だと思うけどね
もうちょっと頭を柔らかくしてみる
無理やり短くする
そもそも「数字」を見つけたいのだから「間違ってヒットしてしまわないような単語(
{}
)を用意する必要はなく、ヒットさせる文字自体も変換する必要ないのだからもっと短くなるねまだまだ頭が固い証拠
人にもよると思いますが、独学は十分可能だと思います。
まずは入門サイトを検索してみてわかりやすそうなサイトで学習してみてはどうてしょう。
あるいは、本屋さんで入門書をみてわかりやすそうなものを一冊購入して読んでみてもいいでしょう。
最近なら、YouTubeでもいろいろありそうです。
どちらにしても、読むだけではなく、そこにあるサンプルを実際に作成してみて、動作を確認しながら進めていかないと、身にはつきません。ですので、自分が将来使いそうなサンプルがあるサイトや書籍から取り組むのかいいでしょう。
hatena様
YouTubeもあるのですね。
サンプルを実際に作成→動作確認 やってみます。
的確なアドバイスありがとうございました。
hiroton様
Accessの関数を考えて下さり、ありがとうございます。
ものすごく長い計算式になってしまうのですね。
データが少なければExcelでも良いのですが、Volumeがあるので、Accessで出来ればと思い、色々試行錯誤しております。
文字列操作はパターンが膨大になりがちで、ちょっと込み入ったことををやろうとすると考えなければならないことが数多く出てきます。「数多く」に対応しようとすれば当然計算式も長くなってしまいますね
このような目的を達成するにはプログラミング的思考が重要になってくるので、そうなれば、その思考をそのまま表現できる手法(VBA)を用いたほうがシンプルにはできるでしょう
どこまでの内容ならVBAにすべきか?というのは難しいところですけどね
hiroton様
なるほど「数字」に限定して抽出するように関数を考えれば、私でも関数でできそうな気がします。
VBA一つずつ勉強してみます。いろいろ、考えて下さりありがとうございました。