VBAか関数で「2と3の組合せ」の行数を算出する方法

このQ&Aのポイント
  • VBAか関数で「2と3の組合せ」の行数を算出する方法について教えてください。
  • 質問の例では、答えは3行となりますが、存在しない場合は0行になります。
  • 他にも「1と3の組合せ」や「*と*の組合せ」などの行数も算出できるので、教えていただけますか?
回答を見る
  • ベストアンサー

VBAか関数 「 2と3の組合せ 」 の行が、いくつあるか?

VBAか関数 「 2と3の組合せ 」 の行が、いくつあるか? Windows XP Home Edition SP3 Office XP Personal 2002 Excel 2002 画像の 「 C列 D列 E列 」 の 「 3列 」 だけを使った質問でございます。 数値は 2桁の整数 までしかありません。 6行目の「 C列 D列 E列 」以外で、オートフィルタをかけた後ですが、空白行もたまにございます。 オートフィルタをかけた後ですので、データのある最後行以下は全部空白です。   実際には、セルには色分けはされておりません。 ---質問のまとめ-------------------------------------- ● 「 2 と 3 の組合せ 」(画像の黄色セル) の行が、いくつあるか? を算出できる、関数 か マクロは、ありますでしょうか? 質問の例では、答えは 「 3行 」 となります。 存在しない場合には、「 0行 」 となります。 ----------------------------------------------------- また、 「 1 と 3 の組合せ 」 の行が、いくつあるか? 「 * と * の組合せ 」 の行が、いくつあるか? などのように、いろいろと算出できればと思っております。 非常にややこしい質問で、恐れ入ります。 今までは、手作業で、6行目にオートフィルタをかけて行っておりました。 何卒、ご教示のほどをお願い致します。 

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

  • ベストアンサー
回答No.6

#4です。もう一案 f2セルはないも入力しない f3セルに =AND(ISNUMBER(MATCH({2;3},C7:E7,0))) 答えは =DCOUNT(C6:E28,,F2:F3) わかりやすい方 =DCOUNT(C6:E28,,G2:I8) Criteriaは添付図参照

oshietecho-dai
質問者

お礼

早速のご回答、ご丁寧に、誠に有難うございました。 先のご回答は、1回で算出できるのですね!

その他の回答 (6)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.7

質問の意図は、いくつあるか、じゃなくて、フィルタしても8行目や11行目が出るから何とか該当のみの表示にしたい、のでは?。 同じ数値が重なる事はありえますか?、3と2と2とか。 030201や030111にして考えると1セルで判定になりまだまだ策はありそうですが。

oshietecho-dai
質問者

お礼

ご回答、誠に有難うございました。

oshietecho-dai
質問者

補足

ご回答、有難うございます。 >質問の意図は、いくつあるか、じゃなくて、 >フィルタしても8行目や11行目が出るから何とか該当のみの表示にしたい、のでは?。 いいえ、そうではございません。 前進的な考えを有難うございます。。 >同じ数値が重なる事はありえますか?、3と2と2とか。 ありえます。が、ほんの、たまにです。 この場合は、「 2 と 3 の組合せ 」は1個とさせて頂きますが、 やむおえなければ、2個でも結構でございます。

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.5

VBAでユーザ関数を作成して見ました。 【基本的使用例】 =組み合わせ件数(C7:E13,2,3) 【VBA】 Function 組み合わせ件数(範囲 As Range, ParamArray 検索値())  Dim マッチセル As Range  Dim マッチ集合行 As Range  Dim セル As Range  組み合わせ件数 = 0  If UBound(検索値) < 0 Then Exit Function  For I = 0 To UBound(検索値)    For Each セル In 範囲      If セル = 検索値(I) Then        If マッチセル Is Nothing Then Set マッチセル = セル        Set マッチセル = Union(マッチセル, セル)      End If    Next    If マッチセル Is Nothing Then Exit Function    If I = 0 Then Set マッチ集合行 = マッチセル.EntireRow    Set マッチ集合行 = Intersect(マッチ集合行.EntireRow, マッチセル.EntireRow)    Set マッチセル = Nothing  Next I  組み合わせ件数 = Intersect(マッチ集合行, Columns(1)).Count End Function 【蛇足】 関数は汎用的に作成していますので… ・検索値を任意の個数で指定できます。  =組み合わせ件数(C7:E13,1)  =組み合わせ件数(C7:E13,1,2,3) ・検索範囲を任意な範囲で指定できます。  =組み合わせ件数(C7:Z13,1,2,3,4)  =組み合わせ件数((C7:C14,D7:D14),1) 良ければ試してみて下さい。

oshietecho-dai
質問者

お礼

早速のご回答、ご詳細、誠に有難うございました。 1,2,3,4 にも対応できるのですね! 自分には高レベルなコードかもしれませんが、 がんばって、使用させて頂きます。

回答No.4

もうちょっと何とかなんないかななんて思ったけど。。。 =SUM((MMULT((C7:E26=2)*1,{1;1;1})>=1)*(MMULT((C7:E26=3)*1,{1;1;1})>=1)) 2 2 2 2 3 2 3 3 3 3 2 3 上記で当てはまるのは 2 3 2、3 2 3で2つですよね

oshietecho-dai
質問者

お礼

早速のご回答、誠に有難うございました。

oshietecho-dai
質問者

補足

ご回答、有難うございます。 ご返事遅くなり、すみません。 >上記で当てはまるのは 2 3 2、3 2 3で2つですよね はいそうです。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

セルG7の式 =IF(COUNTIF($C7:$E7,G$4+10*G$5)+COUNTIF($C7:$E7,10*G$4+G$5)>0,1,0) このセルを下へ、右へコピーします 答えセルG6の式 =SUM(G7:G12)…G12は仮です この式を右へコピーします 任意の1桁の数値をセルG4とセルG5の以右へ入力します

oshietecho-dai
質問者

お礼

早速のご回答、誠に有難うございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.2

#1です。 前の回答で、別の組合せの時にZ1とZ2を使用しましたが、それだとSUMの結果が変になります。 SUM(Z:Z)からZ1とZ2を引く =SUM(Z:Z)-Z1-Z2 か、Z1とZ2を別の列に設定すればそのまま使用できます。

oshietecho-dai
質問者

お礼

早速のご回答、誠に有難うございました。 ご丁寧に、有難うございました。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

作業列を設けて、(例えばZ列を作業列としたとき、)Z7セルに =COUNTIF(INDIRECT("C"&ROW()&":E"&ROW()),3)*COUNTIF(INDIRECT("C"&ROW()&":E"&ROW()),2) と入力し、下にコピーしていきます。 合計行数を求めたいセルに、 =SUM(Z:Z) と入力すると、行数が出ます。 別の組合せでも出したいときは、 1と3出はなく、 Z1セルとZ2セルに1、3を入力し、 =COUNTIF(INDIRECT("C"&ROW()&":E"&ROW()),Z1)*COUNTIF(INDIRECT("C"&ROW()&":E"&ROW()),Z2) などとすると、別の組合せにも対応できます。

oshietecho-dai
質問者

お礼

早速のご回答、誠に有難うございました。

関連するQ&A

  • エクセル2007「ISNUMBER関数」の組合せについて

    エクセル2007「ISNUMBER関数」の組合せについて うまく説明できないので具体的に関数を掲載します。 「B列またはC列が空白の場合は空白セルとする」という関数を以下のようにつくりました。 =IF(OR(B2="",C2=""),"",DATEDIF(C2,B1,"Y")) (B1にはtoday関数が入力されています) これにC列が数値ではない場合も空白にするという条件を追加したいのです。 ISNUMBER関数を使うのだと思うのですが組合せ方がわかりません。 ご教示よろしくお願いします。

  • EXCEL関数についての質問です。

    EXCEL(2003)についての質問です。 関数にて、もし上行(※(1))のセルが空白の場合は空白、 そうでない場合は、2列隣(別シート)(※(2))のセルを返す。 ※(1)セル結合にて行を結合しています。 ※(2)同じ式(関数)ではじめのセル(結合されている)は、 A1次のセルはC1、E1、G1等1列飛ばしで参照。 としたいのですが、可能でしょうか? ちなみに添付画像のように結合行は可変します。 教えていただけると大変助かります。 例)    A            A    B    C    D    E    F    G 1 青森          青森       大阪       熊本 2 大阪 3 熊本   シート1                       シート2 宜しくお願い致します。

  • エクセルVBA及び関数

    初心者です。お教えお願いします エクセル2003です 空白行及び0をなくしたいのですが(C列を入力された時点で自動でE列のようにしたい) 関数の場合及びVBAのシートコードを両方教えていただけないでしょうか VBAのコードは勉強の為です Sheet1    A    B     C     D     E     F 16          文字A        文字A 17          文字B        文字B 18            0         文字C 19          文字C        文字D 20            0         文字E 21          文字D        文字F      22      23          文字E 24 25          文字F 文字はC16~C80まで入っております B16~E80までのセルのみで行いたいのですが 他の場所は関数やグラフ等がすでに入ってますのでいじりたくありません E16~をフォームのコンボボックスのリストにしようと思ってます よろしくお願いましす

  • Excelの関数がうまく使えません。

    Excelで関数がうまく使えません。 「=IF(E2>=2000,200,IF(E2>=1000,100,IF(E2>=500,50," ")))」というのをH列のセルに入力しています。 計算はうまく?いくのですが、偽の場合に空白にしているのに、E列が空白でも200と反映されてしまいます。 ちなみにE列には「=IF(ISNUMBER(D2),(C2*D2)," ")」このような関数を使っております。 H列が空白のときに正しく空白にするにはどうしたらよいのでしょうか? 教えてください。

  • オートフィルタを見出し行選択で不要な列まで▼がつく

    初めて質問します。goo41と申します。 過去ログも検索してみたのですが、出てこなかったので、質問させて いただきます。よろしくお願いします。 要旨としては、見出し行を選択し、オートフィルタをかけると見出し のない部分まで「▼」が表示されてしまいます。 例)     A     B     C     D     E  ┌───┬───┬───┬───┬───┐ 1│名前▼│年令▼│住所▼│   ▼│   ▼│  ├───┼───┼───┼───┼───┤   注)テキスト表なので表示上はずれているかもしれません。    見難いですが列がそろっているものとして見て下さい。 この例では、1:1という行の選択をして、オートフィルタをかけた 場合、A~Cだけでなく不要な列(DとE)にまで「▼」がついてしま います。  ※D列とE列のすべてのセルにはデータは何も入力されていま   せん。ただし、該当の列のどれかに過去、データを入力した   ことはあります。既に消去済み。 オートフィルタをかけるときに、A1:C1を選択すれば不要な列に は「▼」はつかないのですが、複数のシートで汎用的なマクロを作成 したいと思っており、できれば、行選択→オートフィルタで、必要な 見出しのところだけに「▼」がつくようにしたいのです。 というのも自分だけで使うのであればよいのですが、人(初心者)に渡 す必要があるため、できれば不必要な表示は避けたいと考えているか らです。 DとE列をすべてクリアしてみたり、列削除してみたりしたのですが、 一度でも、その列のどこかのセルに入力した経緯があれば、必ずその 列までに「▼」がついてしまうのです…。 これはExcelのバグなんでしょうか? どなたか解決策がありましたら、よろしくお願いいたします。

  • excel関数を用いてある行の範囲内の数値のみを違う行に抽出し、同じ列に対応する値も引っ張ってくることは可能ですか?

        A   B   C   D 1   33   180 2   58   300 3   89   310 4   152   240 5   205   74 上のような表になっている時に、EXCEL関数を用いて、[A]行の「60以上、180以下の数値」のみをC列に引っ張ってきて、なおかつ[A]行のそれぞれの値に対応する[B]行の値をD行に引っ張ってくることは可能でしょうか? 理想的な結果として   A     B      C      D 1   33  180     58    300 2   58   300    89    310 3   89   310    152    240 4   152   240 5  205  74 というようになってほしいのです。 オートフィルターの範囲指定を用いると、C行に範囲内の値を引っ張ってくる事は出来たのですが、関数ではない為、他の表に応用が効かず、毎回フィルターをかけなくてはいけなかったです…そのため出来れば関数を使いたいのですが、何か方法は無いものでしょうか…

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • 【エクセル】横方向へ複数行の数式をコピー

    こんばんは^^ ちょっとエクセルで苦戦してる作業があるので何か良い方法があったら教えてください。   a    b     c    d    e(列) ------------------ 1| 2      3      3       2     1 2| 2      4       1      3      2 ・ ・ 9| sum  c9/a9  sum   b9*c9  b9+d9 (小計の行) 10| 2     3     3     2     1 ・ ・ ・ 14|  2      1      2      2     5 15| sum ・・・・      (小計の行) ・ ・ ・ 上記のようなレイアウトにしたとします。 1.小計行がたくさんあります。 2.それぞれの小計で合計する行数が違います。 3.横方向にsumを手軽にコピーしたいけど、列が多く、ところどころに関数が入っているので、無闇にドラッグしたりできません。 今は、例えば9行の小計を1つsumを使った後、関数が入っていない空白セルのみをctrlキーを駆使して1つ1つクリック、ペースト そして、次の小計行へ行き同じ作業を繰り返してます。 ただ、これだと横にも縦にも長いデータが入ってるので労力使いすぎます(^^; フィルタをかけて「空白以外」にして、横方向にsumをドラッグが出来たら良いなーって思ったんですが、フィルタって列にかけられないですよね? 何か良い方法ってありますか?

  • 「SUMIF」と「AND」関数の組み合わせについて

    2つの表があり、A列の日付が同じでなおかつ表2のB列に「9」が入っているC列の合計数を表1のBに反映し、合計数が「0」なら""空白にしたい場合の関数の組み合わせを教えてください。日付が同じだけなら「SUMIF」と「IF」関数でできたのですが、なおかつ「9」が入っているセルの合計となると上手く反映されません。「AND」関数の使い方が悪いと思うのですが、どうかよろしくお願いいたします。

  •  エクセル関数式により、列ごと最後尾と最後尾からの2行目の値を抜き出す

     エクセル関数式により、列ごと最後尾と最後尾からの2行目の値を抜き出す。  初めまして、よろしくお願いします。      A  B  C  D  E 1    赤  青  黄  緑  黒 2  3    4    1  3  2  0  9 5    9  1  3  4  3 ・    ・  ・  ・  ・  ・ ・    ・  ・  ・  ・  ・   112  4  6  1  9  6 113  7  7  5  8  1 114  6  9  1  3  7    115  7     2  5  0 116  8     0     0  という表があります。 各列の空白、もしくは0の入力されている後の値(A列では8、B列では9、C列では2、D列では5、E列では7)と最後尾の数字から2行目の値を(A列では6、B列では6、C列では5、D列では8、E列では6)を抜き出すことのできる関数式の方法がありましたら、教えていただきたく。よろしくお願いします。

専門家に質問してみよう