• ベストアンサー

ExcelのVBAによるプログラム

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

こんなの処理ロジッが大切で、それだけなら、VBAを知らなくてもできる。 そのロジックがわからないのだろう。だから質問者は丸投げにならざるを得ない。 ロジックは色々な方法が考えられ、コード行数や誤処理に影響を及ぼす。 一例で 処理は上行から下へ1行ずつ処理する(For Next) 「条件に合うもの(行)」の直近の行番号(A)を覚える変数を持っておく。 条件の判定をして、該当なら、今のセルの行番号がA+1なら書き出さない。そしてA=A+1とする。 A=A+1でなければ、書き出す。そしてA=0にでもしておく。 条件が合わない行なら、A=0にして、何もしないで次の行に行く。 ーー 結局場合分けの切り分けを見抜くことだ。 これはプログラムを多数経験して会得しないとならない。 == >抽出したデータを上詰めで整理していくための方法 書き出すシートの行番号を保持する変数Kを作って、書き出しの都度 K=K+1しておくと良い。 ーー 次々要求が出ているようだが、丸投げで、回答をコピペせざるを得ないだけのレベルらしいが、経験をつんでロジックを組み立てて、それを決めて、それを実現する数行のコード群が作れることが必要。 コードはあえて書かない。 ーー 無理しないで、関数で作業列を使い、条件充足のサインを立て、フィルタを使ってでも抜き出して、処理したら。

YT06
質問者

お礼

コードに関する学習が不十分で,みなさんにご迷惑おかけしております。厳しいご指摘,肝に銘じておきます。 個人で活用するものであるならば「関数で作業列を使い、条件充足のサインを立て、フィルタを使ってでも抜き出して、処理」という方法で十分だったのですが,子どもから大人まで共有できるものが必要となり,不慣れにも自動化を試みようとした次第です。 ありがとうございました。

関連するQ&A

  • エクセルVBAでこういう事は可能でしょうか?

    エクセルで同一セル内に存在する特定の文字を検出する方法を教えて下さい。 (例) A1のセルに 変更(2004/10/21) 変更(2004/1/15) 変更(2004/5/10) B1のセルに 変更(2004/10/3) 変更(2004/10/1) 削除(2004/7/23) 上記のようなデータがあるとします。検索条件として、変更の文字が付いてて、日付が(2004/10)のみデータだけ検出したいのです。上記の例で言うと、3件。 VBAを使って上記の条件でデータを抽出する事は可能でしょうか?

  • ExcelでCDを入力して紐付いているNo.を抽出

    とある、チェックシートを作成しています。 Sheet1 過去に起きた事象にNo.を割り当て、それぞれの事象に共通する巡回時のポイント(着眼点)をCDで紐付けます。 カウント列は同じCDをカウントしています。 Sheet2 チェックシートに過去の事象をピックアップで紹介(抽出)します。 CDの列にに連続したCDを入力します。  例) 1.1.1.2.2.2.3.3.3.4.4.4.5.5.5.1.1.1. ... Sheet1からCDに紐ついたNo.を順番に抽出したいです。 ・CDに紐付いているNo.が1つなら1つを連続で抽出 ・CDに紐付いているNo.が2つなら2つを連続で抽出、3つ目は再び最初のNo.を抽出 ・CDに紐付いているNo.が3つなら3つを連続で抽出 ・CDに紐付いているNo.が3つ位上なら3つを連続で抽出、CD列に再び同じCDを入力したら4つ目のNo.を抽出 このように抽出したい場合、関数はどのようにすれば良いでしょうか? No.をSheet1を参照して手打ちで入力する方法もありますが、関数で一括して抽出できる方法がないかと質問させて頂きました。 詳しい方いましたら、ご教授下さい。 宜しくお願い致します。

  • エクセルVBAでのSQLについて

    エクセルVBAで、SQLを記述しているのですがwhereの抽出条件にセルの値を指定したいと思っています。その当該セルの値を変更することで、抽出条件を変更することができるようにしたいです。 しかし、どのような記述にすればよいか分かりません。以下のような記述をしたのですが、うまくいきません。すみませんが、教えていただけないでしょうか。よろしくお願い申し上げます。 ◆抽出条件を指定するセル:A1 セルA1には、数字(例:1000、2000等)をいれます。 mySQL = " SELECT * FROM [◆◆シート!] WHERE Range("A1")"

  • Access 都道府県名を抽出したい

    1つの項目に"/"で区切られ複数の情報が入っています。 例) 登録01/NO#0000/xx県/タイトル:xxx 上記のデータから、クエリの抽出条件に記載する、都道府県名だけを取り出す関数を教えてください。 instrやmidを組み合わせるのは分かるのですが、初心者のためうまくできません。 ご教授いただけると幸いです。よろしくお願い致します。

  • エクセル VBAについて教えてください

    データの一部分を取り出す方法について教えてください。     A    B    C    D    E    F ------------------------------------------ 1   1   北海道  札幌       先頭   2 2   2   青森県  青森       件数   3 3   3   岩手県  盛岡 4   4   秋田県  秋田 このようなデータがあります。 A列の番号において「F2セル」に該当する番号から 連続する件数分だけ抽出したいのですが、どのようにすればできますか。 結果としては「A2:C4」を抽出したいのです。 いろいろ検索しましたが探すことができませんでした。 どうぞよろしくご教授ください。

  • ExcelのVBAで、XMLファイルのデータ抽出

    はじめまして。 XMLファイルに含まれたデータの中から、特定の条件のデータのみを抽出するプログラムを作りたいと思っております。 XMLファイルの中身は <p name="test">あいうえお</p> <p name="test2">かきくけこ</p> <p name="test3">さしすせそ</p> … のようなデータが2~300以上あり、その中から、NAMEが"test"のものだけを抽出するプログラムなのですが、ExcelのVBAで可能でしょうか? ご教授頂ければ幸いです。よろしくお願いいたします。

  • エクセルマクロ(VBA)の立て方について

    お世話になっております。 エクセルのVBAマクロについて教えてください。 以下のように2種類A,Bの縦に並んだ時系列データがあった場合、 A No1  2012/6/1    1 A No2  2012/7/1    3 A No3 2012/8/1    4 B No1  2012/6/15   2 B No2 2012/7/15   6 B No3  2012/8/15   7 B No4  2012/9/15   9 上記のデータを別のシートに以下のように表示させたいのです。 (上記1列目は以下1列目に対応、上記4列目の数字をA、B単位で累計和を以下2列目に表示) A 1 A 4 A 8 B 2 B 8 B 15 B 24 以上のVBAマクロの数式の立て方を教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルのVBA 条件分岐について

    エクセルのVBAで、条件分岐プログラムを考えております。 セルA1に入力された数値が、 2.0以下は"B1セルの値をC1セルへコピー 数値が 5.0以上の場合は"B2セルの値をC1セルへコピー それ以外の場合は”対象外”と表示させたいのですが ご教授お願いします。 又、条件分岐後の部分『C1セルへコピー』の部分を"マクロ1を実行" "マクロ2を実行"というように、変える様な事も出来ますでしょうか? 以上よろしくお願いします。

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。

  • Excel VBA マクロ 繰り返し処理について

    初めて、ご質問させて頂きます。excel2003で、VBAによる連続繰り返し処理をしたいのですが、プログラムの知識が全くありませんので、どなたかご教授頂けませんでしょうか。 VBAによる連続繰り返し処理の内容は、excelの1つの列に上から順番に、IPアドレスを4つずつ同じ値で、入力したいのです。 例:10.30.118.1、10.30.118.1、10.30.118.1、10.30.118.1、10.30.118.2、10.30.118.2、10.30.118.2、10.30.118.2、10.30.118.3、10.30.118.3、10.30.118.3、10.30.118.3、、、 上記の例の様に、1つの列上で上のセルから順番に、4つずつ同じ値を順番に、4000行程度入力したいのですが、手で入力するのは、大変時間がかかる為、自動で入力させたいと思っています。 恐らくfor文を使うのでしょうが、その構文がわかりません。 初心者で大変申し訳ないのですが、どなたかご教授下さい。