- ベストアンサー
VBAか関数で「2と3の組合せ」の行数を算出する方法
- VBAか関数で「2と3の組合せ」の行数を算出する方法について教えてください。
- 質問の例では、答えは3行となりますが、存在しない場合は0行になります。
- 他にも「1と3の組合せ」や「*と*の組合せ」などの行数も算出できるので、教えていただけますか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (6)
- layy
- ベストアンサー率23% (292/1222)
質問の意図は、いくつあるか、じゃなくて、フィルタしても8行目や11行目が出るから何とか該当のみの表示にしたい、のでは?。 同じ数値が重なる事はありえますか?、3と2と2とか。 030201や030111にして考えると1セルで判定になりまだまだ策はありそうですが。
お礼
ご回答、誠に有難うございました。
補足
ご回答、有難うございます。 >質問の意図は、いくつあるか、じゃなくて、 >フィルタしても8行目や11行目が出るから何とか該当のみの表示にしたい、のでは?。 いいえ、そうではございません。 前進的な考えを有難うございます。。 >同じ数値が重なる事はありえますか?、3と2と2とか。 ありえます。が、ほんの、たまにです。 この場合は、「 2 と 3 の組合せ 」は1個とさせて頂きますが、 やむおえなければ、2個でも結構でございます。
- jcctaira
- ベストアンサー率58% (119/204)
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) 良ければ試してみて下さい。
お礼
早速のご回答、ご詳細、誠に有難うございました。 1,2,3,4 にも対応できるのですね! 自分には高レベルなコードかもしれませんが、 がんばって、使用させて頂きます。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
もうちょっと何とかなんないかななんて思ったけど。。。 =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つですよね
お礼
早速のご回答、誠に有難うございました。
補足
ご回答、有難うございます。 ご返事遅くなり、すみません。 >上記で当てはまるのは 2 3 2、3 2 3で2つですよね はいそうです。
- shinkami
- ベストアンサー率43% (179/411)
セル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の以右へ入力します
お礼
早速のご回答、誠に有難うございました。
- edomin7777
- ベストアンサー率40% (711/1750)
#1です。 前の回答で、別の組合せの時にZ1とZ2を使用しましたが、それだとSUMの結果が変になります。 SUM(Z:Z)からZ1とZ2を引く =SUM(Z:Z)-Z1-Z2 か、Z1とZ2を別の列に設定すればそのまま使用できます。
お礼
早速のご回答、誠に有難うございました。 ご丁寧に、有難うございました。
- edomin7777
- ベストアンサー率40% (711/1750)
作業列を設けて、(例えば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) などとすると、別の組合せにも対応できます。
お礼
早速のご回答、誠に有難うございました。
お礼
早速のご回答、ご丁寧に、誠に有難うございました。 先のご回答は、1回で算出できるのですね!