• ベストアンサー

VBAで数値グループをCOUNTする方法

harapeco7の回答

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.2

>各区間空白行が必ず、1~10行迄入力されている状況です。 空白セルをキーとし山の数をカウントしてみました。 ※ベストな記述では御座いません。 ※VBA勉強中との事ですので、足掛かりとして利用してください。 Sub count()  a = Cells(Rows.Count, 1).End(xlUp).Row  Do   b = b + 1   If Cells(b, 1) <> "" Then    b = b + 1    Do     If Cells(b, 1) = "" Then      c = c + 1      Exit Do     Else      b = b + 1     End If    Loop   End If   If a <= b Then    MsgBox "山の数 " & c    Exit Do   End If  Loop End Sub

haru2026
質問者

お礼

harapeco7様 おはようございます。 先ほど、ステップインしながら、確認させていただきました。 このような記述方法もあるのですね。ばっちり動作いたしました! すぐすぐは理解できないのですが、、、これからじっくりと記述の内容を理解し今後のステップアップに役立たせて頂きます。 どうもありがとうございました。 今後ともよろしくお願いいたします!

関連するQ&A

  • 不規則エリアの連続計算方法(VBA)

    度々お世話になっております。 エクセルVBA勉強中の初心者です。 現在、下記のような数値データが入力されています。 処理したいのは、 A列・・・・・・・・・・・・処理後B列 1行目 空白・・・・・・空白 2行目 1・・・・・・・・・・・1 3行目 2・・・・・・・・・・・2 4行目 3・・・・・・・・・・・3 5行目 4・・・・・・・・・・・4 6行目 5・・・・・・・・・・・5 7行目 空白・・・・・・空白 8行目 1・・・・・・・・・・・6→第一エリア目の最終行と足し算 9行目 3・・・・・・・・・・・8→同上 10行目 4・・・・・・・・・・・9→同上 11行目 6・・・・・・・・・・・11→同上 12行目 空白・・・・・・空白 13行目 2・・・・・・・・・・・13 →第二エリア目の最終行と足し算 14行目 4・・・・・・・・・・・15 →同上 15行目 7・・・・・・・・・・・18 →同上  ・                ・  ・                ・ 各エリアは、各1000行程度、エリアの数は、10~20になるため、どうしてもVBAで処理したいと考えております。 (空白~空白をエリアと名付けています。) 各エリアの数、行数ともに区々ですが、最大値を迎えた後、空白行が必ず入るようにデータが入力されています。 このようなデータをVBAで処理したいのですが、可能なのでしょうか? 参考書、過去ログなどを見てあれこれやってみたのですが、パニック状態です。 わかりにくい質問で恐縮ですが、良い方法をご教授いただければ幸いです。 宜しくお願いいたします。

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

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

  • Excel(VBA)マトリクスの解体方法について

    VBAで、以下のようなマクロを作成したいのですが、どのように作成したら良いのか検討がつきません。 どのようにすれば良いか、ご教授いただけたらと思います。 (過去の質問No.1488981を参考に記入させていただきます) (1)下記のように、縦横のマトリクス表にデータが入力されている。     A B C ・・ 1   X Y Z 2 a ○ × ○ 3 b × ○ ○ 4 c ○ ○ ○ (2)これを別シートに【"○"のついたデータのみ】縦に3列にデータを並べるように処理する。  左列には"項番"(1~)、中列には"行データ"、右列には"列データ" 1 a X 2 a Z 3 b Y 4 b Z  ・  ・  ・ (3)列データと行データの数は不定で、一番右下となるセルまで、処理を繰り返すかたちにする。(空白セルが10個以上になる等の条件で) 以上のような条件です。ご回答よろしくお願い致します。

  • ExcelのVBAで連番を振る。

    A列が空白で、B列に1行目から***行目(毎回変わる)までデータが入力されている時、 A列に、1から***まで(B列のデータが終わるまで、連番を振るにはどんなVBAを かいたらいいのでしょうか? お願いします。

  • エクセルVBAによるマトリクス表の縦配列

    エクセルVBAで以下のような処理を行うプログラムを作成したいのですが、 シロウトなんで、なかなかスマートに作れません。 どのようにすればいいかご教示いただけたら有り難いです。 (1)下記のように、縦横のマトリクス表にデータが入力されている。   A B C ・・ 1 2 3 ・ ・ (2)これを別シートに縦に2列にデータを並べるように処理する。  左列には"列項目&行項目"、右列には該当するデータをセットする。 A1  A1のデータ A2  A2のデータ  A3  A3のデータ ・   ・ B1  B1のデータ ・   ・ ・   ・ (3)尚、列項目(A.B.C...)と行項目(1.2.3...)の項目数は不定で、セルが空白になるまで、 処理を繰り返すかたちにする。 以上のような条件ですが、よろしくお願い致します。

  • エクセルVBAでデータ最終行取得方法

    エクセルVBAでデータ最終行取得方法で良い方法を教えてください。 データの行数、列数は不定。 最多のデータ行の列も不定。 この条件で、データ最終行を取得するにはどうすればよいでしょうか? lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row では、A列の最終行に限定されます。 lastrow = ActiveSheet.Cells(1, "A").SpecialCells(xlLastCell).Row では、列の限定はありませんが、一旦データ入力後、削除した部分まで入ってしまいます。 lastrow = ActiveSheet.UsedRange.Rows.Count では、データ入力後、削除した部分まで入ってしまい、かつ、1行目など上部が空白の場合、不正確になります。

  • エクセルのVBAで

    ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。

  • EXCEL COUNT関数で

    EXCEL COUNT関数で A列の1-10行目まで文字や数字なにかを入力したら セルA11に何行入力したかを自動計算させるようCOUNT関数を挿入しました。 例えば A1:123 A2:45-6 A3:ABC 上記は3行入力してるので3と表示させたいです。 だけどA2:45-6のように-があると計算せず2とでます。 なぜでしょうか? 宜しくお願い致します。

  • VBAでの行挿入について

    Excel VBAの条件に合った場合、行挿入&挿入した行のセルに特定の値を入力 VBA初心者です。Excel2007、XPを使用しています。 A列からCK列、平均100行程度の顧客データがあります。 このデータは列数は変わりませんが、行数は毎回異なり、 1行1顧客ではなく、同じ顧客で数行で入ることがあります。 しかしA列の顧客番号で判別できるようにはなっています。 目標は下記の点です。 「BC列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「ポイント利用」と入力。 挿入した行のAC列に「BC列の値」を入力。 挿入した行のAB列に「1」を入力。 「BJ列」に値がある場合、 1行下へ空白行を挿入(できればA~X、Z~AA、AD~CKは1行上と同じ)。 但し挿入する位置は、顧客情報の一番下(1行の場合は2行目、2行の場合は3行目と)です。 挿入した行のY列に「送料」と入力。 挿入した行のAC列に「BJ列の値」を入力。 挿入した行のAB列に「1」を入力。 以降に必要な処理はマクロで作成できたのですが、 その後に上記項目を手作業で処理しているのも限度があるので、 最初に挿入処理できればと思ってます。 分かりづらい説明だとは思いますが、 何卒ご教授頂きたくお願い致します。

  • Excel VBAでデータを自動処理したい

    Excelで大量のデータ処理をしなくてはならないのですが、以下の処理をExcel VBAで自動処理できないでしょうか? どなたかお知恵をお貸しください。 (1)A、B、C列からなるリストがあります。A,B列にはそれぞれオートフィルタが設定してあり、C列は空白です。A列、B列にそれぞれ条件を設定し、抽出したデータのC列(空白)に特定のデータを入力します。A列、B列2つの条件の組み合わせが100通りくらいあり、現在手動でオートフィルタを設定し、C列にデータを入力しております。例えばA,B列の条件の組み合わせと、それに対応するC列に入力するデータを表にしたテーブルを別に作り、A,B列の条件を自動に設定して、抽出し、C列にデータを自動に入力することを、テーブルの一番上の行から最後の行まで繰り返す、というようなことをVBAでExcelにしてもらいたいのです。自分でちゃんと勉強し、調べて、それでも分からなかったらお聞きするというのが筋だと思うのですが、今この仕事に追われて、時間がありません。(ほとんど毎日午前様です。)この仕事が片付いたら、じっくりVBAを勉強したいと思っております。どうぞよろしくお願いいたします。