- ベストアンサー
データを抽出して更新するアルゴリズムについて
基本情報の勉強をすこしかじっているのですが、ソートや検索といったものの基本的なアルゴリズムはならったのですが、いまいち応用が出来ません。例えば、エクセルなどで、値の書き換えの必要となるあるデータの集まりを抽出し、一度必要な更新(データの置換)を行ったものはもう更新の対象としない、あるいは、元のデータの群れに戻すというような場合、どのような処理手順を書くのが理想的でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
やり方は何通りもあります。何が「理想的」かは難しいので、それは 後で述べます。 サンプル手順 (1)原データがシート1、作業場所をシート2とする。 (2)シート2をクリアし、シート名を「作業中」にする。 (3)シート1のある行をシート2へコピーする。 (4)コピーした行が更新対象条件に一致していたら(5)を行う。 (5)更新条件に従って、該当行のデータを更新する。 (6)最終行に達するまで(3)~(5)を繰り返す。 (7)終了後、シート2の名前を「更新済」にする。 検証(サンプル) (1)再実行性 プログラムのエラー、不慮の事故などで、更新が途中で停止しても、 中断箇所、あるいは最初からやり直すことで、処理を完成できるか? (2)分かり易さ 処理手順が簡明か、冗長性はないか? (3)保守性 例えば、抽出条件、更新条件はハードコーディングではなく、何処か 別のシートで指定できるか? 処理手順を上記検証項目に照らし合わせてみて、評価します。 検証項目はサンプルで、他にも色々な観点があります。 検証の結果、高い評価を受けたものが「理想」に近いものと言えます。 >いまいち応用が出来ません 気にしなくて良いです。ただ、発想力は必要です。 「方法Aでやってみたがダメだった。」のあと、直ぐに方法Bを考え つくかどうか、言葉を変えると「押してもダメなら引いてみな」という 感覚です。実務について2年くらい経たないと、難しいでしょう。 未だ、頭の中の「引き出し」が少ないですからね。
その他の回答 (2)
- lv4u
- ベストアンサー率27% (1862/6715)
>>エクセルでは難しいでしょうか? 難しいという意味は、覚える・理解するのが難しいという意味ではありません。 例えば、厚さ1cm、幅50cmの板を2つに切るとき、普通は、ノコギリを使います。この板の切断作業をノミあるいは電気ドリルでやろうとするような難しさです。 つまりは、質問者さんがやりたいことに対して、エクセルが不適切なプログラム(道具)だということです。 >>まだVBAを使いこなす技量がありません。 AccessだとVBAを使わないでも、可能になりますよ。そのかわりにAccessのマクロやSQL言語などを覚えないといけないかもしれません。もちろん、使いやすいプログラムにしたい場合は、AccessVBAを覚える必要があります。 まあ、プログラミングの学習は、大工や料理人、つまりは職人をめざすようなところがあります。それなりの修業期間と努力を継続しないと、技量は上がりません。そして、誰でも最初は技量は無いものですよ。
お礼
励ましのお言葉有難う御座います。ただ向き不向きもかなりあるような気もしますが・・・ある程度までやってみないと分からないですよね?
- lv4u
- ベストアンサー率27% (1862/6715)
通常、質問者さんのやりたいちょっと複雑な処理は、エクセルでは困難です。 例えば、画面のフォームでちょっとしたデータを入力して計算するプログラムなら、VBやC#がいいけど、ハードウエアを制御したいときは、CやC++が向いているように、向き・不向きがあります。 質問された処理は、ExcelVBAを使えば、ある程度は対処できるでしょうが、やはり、Access等のデータベースにAccessVBAを使うなど、「データベース+プログラム言語」で考えられたほうがいいと思います。
お礼
エクセルでは難しいでしょうか?まだVBAを使いこなす技量がありません。いろいろ本とか見てこれも慣れでしょうか?
お礼
ご丁寧に有難うございます。やはり試行錯誤しかないですね。