• 締切済み

2つの条件に合致するVBAの作り方

VBA 初心者です。 エクセルで 会員ID(A列) 法人名( B列) 部署名(C列) お名前(姓)(D列) お名前(名)(E列) 購入日 (F列) ・ ・ 以下3500行くらい続く という感じのダウンロードデータがあります。 1.姓と名前が一致したら(同じ人)ならカウントしない (新規購入時のみカウントする) 2.年月別で(日もデータにありますが年月別で)購入者数を出したい(法人と個人でそれぞれカウントする) 法人購入はセルに記入あり、個人は空白セルになっています。 というプログラムをつくりたいのですが、2つの条件にあてはまるとこでつまづいています。 とてもVlookupとか試してみたのですがエラーになります。 助けて下さい!! .

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

>1.姓と名前が一致したら(同じ人)ならカウントしない >(新規購入時のみカウントする)  ⇒同姓同名の可能性を考慮して、会員IDで計数するのではないでしょうか。   Dictionaryオブジェクトで簡単にできますよ。 >2.年月別で(日もデータにありますが年月別で)購入者数を出したい >(法人と個人でそれぞれカウントする) >法人購入はセルに記入あり、個人は空白セルになっています。  ⇒計数する年月表を作成して、表の年月とデータ購入日の年月で計数する。   因みにSUMPRODUCT関数を利用するとか、For ~ Nextで計数する等でしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでセルの条件に合致したセルの選択

    いつもお世話になっております。 エクセルで毎日更新されるデータを使って添付ファイルのように表を更新していきたいと考えています。 (1) Sheet1(含損益の推移)Sheet2(DLデータ)の二つのシートを作り、毎日更新されるデータをDLデータに添付します。(当日データのみ) (2) Vlookup関数でDLデータからNOに対応した、価格を表示します。 (3) E列以降は、データ抽出日と発売日の差から、対応する日数目に価格が表示されるように、IF関数を使った数式を入れています。(黄色セル) 上記だと、DLデータに当日データのみを添付するため、例えば2月2日のときは黄色セルは表示されるけど、青色セルは表示されません(当然ですが・・・) そこで、VBA等でデータ更新する前に、青色セルの部分を自動で選択して、関数式⇒値に変換出来ないかと考えています。 そのような事は可能でしょうか? どなたかお知恵を貸してください。よろしくお願いいたします。

  • vbaで・・・

    vba初心者でよろしくお願いします。 vbaで別のシートにある、条件に一致したデータの入っているセルの一つ下のセルから横方向に空白のひとつ前までを選択し、コピーをしたいのですが・・・具体的には 別のシートにある、 あ あ あ あ 空白 い い い い 空白 1 2 3 4 空白 5 6 7 8 空白 の、最初の"い"の下のセル(つまり"5"のセル)から横に空白のセルまでをコピーして、さらに、列と行を入れ替えて別のシートにコピーしたいのですが、ちんぷんかんぷんです。 どなたか力を貸して下さい。お願いします。

  • エクセルVBA(条件に合うセルを選んで数式に置換)

    エクセルのマクロについて質問です。 sheet1 に、下記の様な表があるとします。 sheet2 には前月分の同じ表があり、勤務地の列にブランクや0のものはなく、全て埋まっています。 sheet1のB列が0かブランクのセルには、VLOOKUPで前月のデータを拾いたいと思います。 どのようなマクロを組めば良いでしょう? 実際のデータは500行ぐらいあり、その数は毎月変化します。 アドバイスよろしくお願いいたします。 A列     B列 《氏名》  《勤務地》 山田    (空白) 田中    0 中島    (空白) 田上    東京 上田    名古屋 岡田    大阪 岡村    0 村田    大阪 田村    名古屋 林田    (空白)

  • エクセルで条件に合ったデータ抽出・自動更新

    エクセルで条件に合ったデータが別のセルに自動に書き出され、元データの更新に応じいつも更新されるようにしたいのです。 A列   B列     C列   D列 No.   会員名   条件1  条件2 1     山田花子  ○    ○ 2    田中太郎  ○   (空白)              ×    ○              (空白) ○ 会員は200人くらい、上記のように条件は4種類です。 この表の外(できれば別シート)に条件が○○の人の名前がずらり、 ×○の人の名前がずらり、というように それぞれの条件に合った人の名前だけが表内の順序どおりに書き出され、 元データを更新すると、条件ごとに書き出した名前も 自動的に(または更新ボタン一つで、) 更新されるようにしたいのです。 マクロはできません どうしたらいいですか?

  • 【VBA】データが途切れた回数をカウントする方法

    添付画像のような1行ごとにデータが入力されている表があります。 このデータには、データが入力されているセルと空白セル(黄色のセル)があります。 1行ごとに、最初にデータが入力されたセルから最後にデータが入力されたセルまでの間に、空白が発生した回数が何回あるのかをカウントしたいと思っております。 空白セルの数をカウントするのではなく、データが途切れた回数をカウントしたいのです。 VBAを使って、上記のような処理は可能でしょうか? 私は現在VBAを勉強中で知識が浅いため分かりませんでした。 もし可能であれば、その方法を教えていただけると大変助かります。 お手数お掛けいたしますが、よろしくお願い致します。

  • 複数の条件で別のセルをカウントする場合

    同列内の特定の複数商品に当てはまる、別のセルのデータ個数をカウントしたいのですが、 図の商品名、りんごとみかんについて購入日が入っている個数を調べるにはどうしたらよいでしょうか。 よろしくお願いいたします。

  • 一定条件を満たした時刻を割り出したい

    スマートな解決が思いつかなかったのでお力を頂ければ幸いです。 エクセルシートで ・A列には1分刻みで時刻が並んでいます ・B列は別シートのデータを参照し、ある一定の閾値を超えたら+1ずつカウントアップするようにしています(具体的にはB2セルに「=IF(AND(別シート!B1<=閾値,別シート!B2>閾値),B1+1,B1)」、以下オートフィルといった式を想定してください) この条件で、B列がカウントアップした時のA列の値を引っ張り出すにはどうすれば良いでしょう? VLOOKUPで行けるかなと思ったんですが、扱い不慣れな関数ゆえか引数に上手い当てはめができず1とかN/Aとかばかり引いてしまう始末で。さりとて関数一覧を見ていても他に使える手段を思いつかず… 何か上手いやり方があればご教示いただけないでしょうか。

  • Vlookup関数を生かして、入力規則をに設定する方法ってありますか?

    別シート(sheet2)に、Vlookup用マスターを作ってあります。 でsheet1に、セルF1に、=IF(H2="",""Vloouup用マスター!$A$2:$B$14,2,false)というような形で、 H2が空白だったら、空白にして、そうでなかったら、検索して、2列目を、表示ようにしてあります。 Vlookup用マスターの1列めに入っているのは、日本語の項目名で、それを、検索値として、入力すると、2列目の数字を出すようにしてあるのですが、 1列目の項目名が長いので、コピーしています。 同一シートなら、データの入力規則で、プルダウンキーを使ってリストを作る方法もあるのですが、別シートだと、それもできないようなので、 Vloouupのマスターを生かしたまま、もともとのシートに、もっと、簡単に入力できる方法が何かあったら、教えて下さい。 よろしくお願いいたします。

  • エクセル マクロ VBA

    エクセルのマクロについて質問です。 『集計』というブックの『集計開始』というシートに     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 コメント  空白     空白   3行目 空白   空白     空白 4行目 商品名  支店     個数  5行目 空白   空白     空白 6行目 空白   空白   コメント1 7行目 空白   空白     空白 8行目 空白   空白   コメント2 9行目以降    上記のデータ(見出しを除く)の繰り返し というデータが入っています。 B列の中に『AAA』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 C列の中に『B』という文字が含まれていたら、そのセルを空白に置換し、 含まれていなかったら、そこで処理がとまったりエラーが出たりしないで次のステッップへ進み、 (今は、手作業で編集→置換→検索する文字列の中に『B*』と入力し、 置換後の文字列を空白にしてすべて置換ということをやっています。)                            ABC列(データーの入っている行まで)の空白を含む行を一括削除し、 以下のような形にしたいのです。     A列    B列     C列 1行目 見出し  見出し   見出し      (商品名)  (支店)  (個数)         2行目 商品名  支店     個数  3行目 商品名  支店     個数          ・         ・ このようにするマクロ文はどのようになりますでしょうか?

  • Excel2013VBAでVLOOKUP条件付き

    いつもお世話になっております。 Excel2013VBAでVLOOKUP関数を使用して、商品名に対応した商品コードをとりたいのですがうまくいきません。 アクティブシートの表のA列、D列、G列に商品名を複数入力してあります。 テーブルシートのB列に同じく商品名があり、C列に商品コードがあります。 VLOOKUPを使ってテーブルシートから商品コードを取り出して、アクティブシートのA列、D列、G列の商品名の下の行に商品コードを入力するにはどうすればよろしいでしょうか? 条件として、テーブルシートのC列の商品コードは空白のものが存在する。その場合は処理する必要なし。 アクティブシート内の商品名の下の行が空白の場合のみ処理を行う。商品名が連続して入力してある箇所で商品コードが存在する場合は、メッセージでセル番地を表示して、処理を中断。ただし連続して入力してあっても、商品コードが存在しないものは問題なしとして次の処理を行う。 一部作りかけのものを提示します。また、下記コードはブレークポイントで停止しながらだと一応動作していましたが、普通に動かすとフリーズを起こします。すいません。 たびたびすいませんが、よろしくお願いいたします。 Sub VLOOKUP検索() Dim h As Range, ac As Range Application.ScreenUpdating = False Set ac = ActiveWindow.ActiveCell On Error Resume Next For Each h In Range("A:A,D:D,G:G") If h.Offset(1, 0) = "" Then h.Offset(1, 0) = Application.WorksheetFunction.VLookup(h, Worksheets("テーブル").Range("B:C"), 2, False) End If Next Application.ScreenUpdating = True ac.Select End Sub

このQ&Aのポイント
  • バルサンを使っても害虫が退治されない場合、不良品である可能性があります。
  • バルサンは効果的な害虫駆除剤ですが、正しく使用しないと効果が得られません。
  • 使用方法や環境によってはバルサンの効果が現れないこともあります。
回答を見る

専門家に質問してみよう