• ベストアンサー

マクロ エクセル 結合セルのカウント

エクセルのマクロについて教えてください。 結合されたセルに数字が入っていたらそれの数をカウントし、その数の部数の印刷する方法を教えていただけないでしょうか。 sheet1のB12:E17に結合セルが6個、M12:M17に結合セルが6個あります。 この12個の結合セルの中に数字が入っている結合セルの数の部数をsheet1の印刷枚数として印刷するようにしたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.5

> 結合されたセルに数字が入っていたらそれの数をカウントし > この12個の結合セルの中に数字が入っている結合セルの数の部数 質問の画像で結合セルに「5」とあるのですが、5部なのか、一カ所なので1部なのかよくわかりませんが 結合セルは結合分の左上のセルに値が入っています。ロットNoの結合セルで左のB:EはB列に右のM:P列にデータが入っています。 Sub Test() Dim num As Long ' B12:B17,M12:M17の数値を合計した分の部数を印刷する num = WorksheetFunction.Sum(Range("B12:B17,M12:M17")) ' B12:B17,M12:M17の数値データの個数分の部数を印刷する num = WorksheetFunction.Count(Range("B12:B17,M12:M17")) Worksheets("Sheet1").PrintOut copies:=num, Preview:=True End Sub

RT123456789
質問者

お礼

kkkkkmさん うまくいきました。 ありがとうございます。 説明足らずに申し訳ありません。数値データの個数分印刷することでした。 ありがとうございました。

その他の回答 (6)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.7

回答№3,4です >結合されたセルに数字が入っていたらそれの数をカウントし、 ★数値のセルの個数の計算です(文字列のセルは対象外)  結合されたセルは1個となります。  結合されたアドレスは左端のアドレスです。念の為

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.6

No.5の訂正 右のM:P列にデータが入っています。 ↓ 右のM:P列はM列にデータが入っています。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

回答№3です セルD18の式を  =COUNT(E11:E16,P11:P16) と訂正します

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.3

>エクセルのマクロについて教えてください。  結合されたセルに数字が入っていたらそれの数をカウントし、 ★その通り、部数の計算は〈カウント関数〉を使います  印刷はマクロでは処理を出来ないようです  添付のようにセルD18に式〈=COUNT(B12:B17)+COUNT(M12:M17)〉で求めます

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

・エクセルVBAで処理することを望んでいるとする。総合的に費やす時間は目視の方が早いと思うが。 ・下記はテストしたデータ例が少数で、十分ではない。ご免。 ・本件は珍しい課題だと思う。WEB記事にも似た課題は探せなかった。見たこともない。 ・セル結合や個所数を出すのは、VBAでは適したもの(メソッド、プロパティ)がない。 ように思うが、本件には、手こずった。 ーーー https://vbabeginner.net/check-number-excluding-duplicates/ VBAで重複を除いた値の個数を調べる を参考に考えた。 Dictionaryは大げさなようで、使わなかった。 ーーー 結合セルのカタマリの場所の数(かつ、値が数)は下記コードを実行してだす。 あとは、印刷を行う時のVBA引数で渡すなりして使うことになろう。 残念ながら、いろいろ考えたがうまく行かず、Sheet2を作業シートとして、使わざるを得なかった。 後半でSubtotal関数の利用も苦心の末の工夫です。 ーー 下記Range("A1:Z100")の部分は、適当に広めに設定のこと。 標準モジュールに Sub test01() k = 2 'Sheet2の第1行目見出し、第2行目から For Each cl In Worksheets("Sheet1").Range("A1:Z100") '適当に広目にセル範囲を設定 If (cl.MergeCells = True) And (cl.Value <> "") And (IsNumeric(cl) = True) Then Worksheets("Sheet2").Cells(k, "A") = cl.MergeArea.Address k = k + 1 End If Next '-- MsgBox "End" 'ーーー Worksheets("Sheet2").Range("A1:A" & k).AdvancedFilter Action:=xlFilterInPlace, Unique:=True n = WorksheetFunction.Subtotal(3, Worksheets("Sheet2").Columns(1)) 'Subtotal関数の3は件数 n = n - 1 '見出し行除きの数 MsgBox n End Sub ---------- この n を印刷時のPrintOutメソッドのCopiesの件数に使ってはどうか。

回答No.1

=B12+B13+B14+B15+B16+B17+M12+M13+M14+M15+M16+M17 とすれば良いと思います。 分散してセルB19に「=B12+B13+B14+B15+B16+B17」 セルM19に「=M12+M13+M14+M15+M16+M17」 としておいて セルF22に「=B19+M19」としてもいけると思います。

関連するQ&A

  • マクロによる複数のエクセルファイルのセル結合解除

    エクセル2016を使っています。 aaaという名前のフォルダの中に、複数のエクセルファイルが保存されています。 エクセルファイルにはそれぞれ複数のシートがありますが、シート枚数はファイルによって異なります。 全てのエクセルファイルの結合セルを解除して上書き保存したいのですが、まとめて行うためのマクロを書けません。 なお結合されているセルはどのシートでもA1からAZ150の中にあります。 おわかりの方教えていただけますでしょうか。 よろしくお願いいたします。

  • エクセルでセル内の文字をカウントしたい

    エクセルでセル内の文字をカウントしたいです。 例えば A| B| 1|1,2| 2|1,3| 3|2,3| 4|2 | 5|3 | というエクセルでB列の1の数、2の数、3の数をカウントしたいです。 B列の中には数字と数字の間は,が入っています。 困っています!よろしくお願いします!

  • Excel(セルの結合マクロ)

    いつもお世話になっております。 Excelのマクロで、選択範囲の中で、下のセルが空白のものは、上のセルと結合されるマクロを作りたいと考えています。 (例1:A1セルに”TEST”が入力されており、A2,A3セルが空白として、A1:A3を選択し、マクロを実行するとA1からA3がセル結合される  例2:A1に”TEST2”B2に"TEST3"が入力されており、A1:B3を選択すると、A1からA3が結合され、B2とB3も結合される) 説明が下手で申し訳ないのですが、お力を貸していただけませんでしょうか? よろしくお願いいたします。

  • エクセルマクロで結合されたセルをコピー

    こんばんは、エクセルで、結合されたセルを結合セル数の違うセルにマクロで貼り付けたいのですが、どのようにしたらよいでしょうか? 結合セル数が違ってもコピー貼り付けできるところとできないところがあるのですが、どうしてでしょうか? よろしくお願い致します!!!!!

  • エクセルのマクロで結合セルに値を貼り付けたい

    お世話になります。 マクロ初心者で本やネットで色々調べたのですが分からないため 教えていただけますと幸いです。 Sheet1にはB1:B3、B4:B6…と3行縦に結合された表があり、 Sheet2のA列には単独セルに商品の名前が入っております。 膨大な量のため、Sheet2のA列に入っている情報を Sheet1の縦に結合されたセルに一つずつマクロで転記したいと 考えております。 Range("B1:B100").Value = Range("A1:A100").Value のように記載すると、2個飛ばしで入力されてしまうので、 結合されている分飛ばされないで一つずつ転記したいのですが どのようにしたら良いでしょうか。

  • エクセルのセル~結合セルへのコピーの仕方を教えて

    フォーマットのセルがありますが 結合セルで出来ています マクロの設定も含まれているようです Aの一列の中で上下2つのセルで一つになっています それが五行あります 左にはエクセルのもともとの枠の番号が1から10まであって Aの縦のセルの数は五行です そのAの縦に名簿のセルを例えば5名分貼り付けますと もともとの結合前のセルに戻って5行貼り付けられてしまいます 左にあるエクセルのもともとの枠の番号ですと1から5までに 貼り付けられるのです わたしはもともとの結合セルの5つのセルにはめ込みたいのですが いっぺんには出来ません 一つづつですとできます なぜなのでしょう 結合セルにまとめてコピーできる方法を教えてください マクロの設定はくずれてもあらかじめ消してもかまいません 私がしたいのは コピーして改めて作ったものの印刷だけです よろしくお願いします

  • セルの結合マクロについて

    セルの結合マクロについてご相談させてください。 セルのA2とA3を結合,B2とB3を結合。 セルのA4とA5を結合,B4とB5を結合。 セルのA6とA7を結合,B6とB7を結合。 というように、A2,A4,A6・・・、B2,B4,B6・・・にデータがあれば、結合するマクロを作成したいです(データがなければそこまでのデータを結合)。 例えば、A2とA3両方にデータがあった場合、A2の内容で表示されるようにしたいです(B2とB3についても同様)。 複雑でどのようにマクロを書けばよいのか困っていました。 恐れ入ります、どのようにすれば良いのかわかる方がいましたら教えていただけないでしょうか。

  • セル結合をマクロで行ないたい(その2)

    度々お世話になっております。 エクセル2000ですが、例えばA1:C10の範囲を選択した状態で、一発で横方向のみのセル結合をする(A1,B1,C1を結合、A2,B2,C2を結合、・・・A10,B10,C10を結合)マクロは可能でしょうか?

  • エクセルで結合したセルをグラフにしたい

    エクセルでグラフ(レーダーチャート)を作成するにあたって、複数のセルを結合した箇所を1データ(セル)として認識させたいのですが、結合前の空白のセルもカウントしてしまいます。 現在、具体的な「グラフ データの範囲として」 ='〇〇シート'!$M$19:$M$25,'〇〇シート'!$O$19:$P$25 となっておりますが、 どの列でも23、24行目を結合しているので、見た目は結合されているので あるはずのない24行目が認識されていて、レーダーチャート上で空白になってしまいます。 どうにかして24行目を外して計算したいのですがどのようにグラフのデータ範囲を選択すればいいのでしょうか?

  • エクセルでセルをカウントしたい!

    エクセルを使ってある言葉が出てくるセルの数をカウントしたいと 思っています。 たとえば一つのセル、 Aの1に「言葉の数を数えます。」 と文字がはいっていたとして、 これを=COUNTIF(A1:A1,"*数*")とすれば、 出てきた個数ではなく、セルの数として 「1」と返ってくると思います。 これを応用して、 Aの1に「数」と入力されていて、 Bの1に「言葉の数を数えます。」が入っていて、 =COUNTIF(B1:B1,"*数*")で数えるのではなく、 =COUNTIF(B1:B1,"*A1*")としてAの1の文字を 認識させてセルの数をカウントしたいんです。 しかしこれではエラーがでるし、 だからといって =COUNTIF(B1:B1,A1)では0になってしまいます。 どのようにすればA1の文字を参照させセルの数を カウントすることができるでしょうか?

専門家に質問してみよう