![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
皆様のお力をお借りしたいッッッ!!!
A列~D列の内、三つの全て条件(約200種)に当てはまるパターンをカウントするのですが。。。
それが、2700行も....
めまいがしそうです。。。(><;)
表ですが
1、検索するのはA2~D2の4列に20種類ある文字の内からランダムに4つ入っており、約2700行まで続いています。
2、E2~G2に、20種類ある文字を3つを組み合わせたものを1種類とし、約200種(約200行)あります。各行の3つの文字、全てに当てはまることが条件となります。
3、H2に、条件に合うものの合計を表示する。
これらの事を行いたいのです。
AからDの中にある文字は、20種類の文字で形成されています。
並び順は無視します。
1行あたり4つのパターンが作れます。
それらも、1とカウントしますが、一つの行で重複する組み合わせはカウントしません。
A B C D
例)SX XX SX SX
の場合、ABC、ABD、BCD、ACD、ですが、ABC、BCDは、同じなのでカウントしません。
オートフィルターを使ってみたのですが、一つの条件に合うか?どうか?を4通り、しかも、200種も調べねばならないのは、かなりキツイものが・・・(T T)。
どうか、お知恵を拝借させていただきたく存じます。
No.3ベストアンサー
- 回答日時:
こんばんは!
E~G列の3つのデータがA~D列の4セル内に含まれていたら「1」とカウントし
その行が何行あるかH列に表示したい!
という解釈です。
VBAになりますが一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から//
Dim i As Long, lastRow As Long, myRng As Range
Dim myArea1 As Range, myArea2 As Range, myArea3 As Range
Dim myFirst As Range, myFound As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
Range("I:I").Insert
With Range(Cells(2, "I"), Cells(lastRow, "I"))
.Formula = "=A2&""_""&B2&""_""&C2&""_""&D2"
.Value = .Value
End With
Set myArea1 = Range(Cells(2, "I"), Cells(lastRow, "I"))
For i = 2 To Cells(Rows.Count, "E").End(xlUp).Row
Set myFound = myArea1.Find(what:=Cells(i, "E"), LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myArea2 = myFound
Do
Set myFound = myArea1.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myArea2 = Union(myArea2, myFound)
Loop
Set myFound = myArea2.Find(what:=Cells(i, "F"), LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myArea3 = myFound
Do
Set myFound = myArea2.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myArea3 = Union(myArea3, myFound)
Loop
Set myFound = myArea3.Find(what:=Cells(i, "G"), LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = myArea3.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
If Not myRng Is Nothing Then
Cells(i, "H") = myRng.Count
End If
Else
Cells(i, "H") = 0
End If
Else
Cells(i, "H") = 0
End If
Else
Cells(i, "H") = 0
End If
Next i
Range("I:I").Delete
Application.ScreenUpdating = True
MsgBox "完了"
End Sub 'この行まで//
※ 解釈が違っていたらごめんなさいね。m(_ _)m
あ、ありがとうございますっっっ!!!
わかりにくい質問を解釈頂き、すばらしき回答をいただいたおかげで、
一発表示でカウントされましたッ!!!!
本当に、助かりましたッッッ m(_ _)m!!!
No.2
- 回答日時:
エクセルの質問ですか?エクセルで大きなデータを自動的に扱うにはプログラム的な順次処理が必要ですので、マクロを使用し、判断(ifみたいのないですか?)など使って処理すると楽になります。
関数だけでやると大変そうですね。![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_09.png?5a7ff87)
No.1
- 回答日時:
1回でやろうとせず、複数回に分けてやられたらいかがですか?
恒久的に利用するものならともかく、何回か、便宜的に計算する場合は、わたしは、いちいち、細かなexcelの関数を使って作りません。
だいたい、excelとaccessを組み合わせて、何回か作業をすれば目的としたものは作れます。
1回でやろうとすると、そうとう時間がかかることや、関数記述ミスなどから、危険度が大きく、あとで、間違えて集計してしまい提出後に「間違えた」ではすまないので、わたしは、一回で計算するようなことはしません。
それと、どちらかというと、こういう分けた作業のほうが時間的に速く、出た結果も検証がしやすいです。 とくに、excelで複雑な関数を作る人がいまが、excelは関数が見えないので、あとで点検するのにすごい労力がかかりわたしは時間の無駄のように考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) googleスプレッドシートでカッコ内の文字数をカウントしたい 1 2023/01/17 15:52
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/10 08:51
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) EXCEL関数(数式)を教えてください 11 2023/05/09 13:19
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】行挿入で数式もい...
-
一つのシートの中に複数のペー...
-
エクセルVBAで、行コピーを複数...
-
エクセルで作成した縦に長い表...
-
WEB上の表の列コピー選択方法は?
-
地番を順に並べたい。
-
エクセルのリストから欠番を拾...
-
メモ帳からエクセルに貼り付け...
-
毎回、データの行数が変化して...
-
ワードでアンケートの集計をし...
-
Excel 表から値をさがして隣の...
-
Excelピボットテーブルで 総計...
-
エクセルの関数の使い方 繰越...
-
オートフィルタのリストを順番...
-
エクセルで空白行に上の行のデ...
-
EXCELで「行幅」を保持したまま...
-
名簿を作成したいのですが…以下...
-
エクセルが重い
-
マクロを強制的に有効にする方法
-
エクセルでの質問です
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つのシートの中に複数のペー...
-
オートフィルタのリストを順番...
-
WEB上の表の列コピー選択方法は?
-
エクセルで作成した縦に長い表...
-
【エクセル】行挿入で数式もい...
-
ピボットテーブル→参照が正しく...
-
エクセルVBAで、行コピーを複数...
-
メモ帳からエクセルに貼り付け...
-
Excelピボットテーブルで 総計...
-
エクセルのリストから欠番を拾...
-
Excel 表から値をさがして隣の...
-
Excelの数式のコピーで列移動で...
-
エクセルの関数の使い方 繰越...
-
エクセルの列幅
-
Excelで検索結果をテキストボッ...
-
一太郎にエクセルの表を貼り付...
-
エクセルに詳しい方、助けてく...
-
地番を順に並べたい。
-
マクロを強制的に有効にする方法
-
ワードでアンケートの集計をし...
おすすめ情報
紛らわしくてすみません!!
例に挙げたABC、BCDは重複しますが各1、計2と、カウントせず、2個でも1個とします。