![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
皆様のお力をお借りしたいッッッ!!!
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?e8efa67)
No.1
- 回答日時:
1回でやろうとせず、複数回に分けてやられたらいかがですか?
恒久的に利用するものならともかく、何回か、便宜的に計算する場合は、わたしは、いちいち、細かなexcelの関数を使って作りません。
だいたい、excelとaccessを組み合わせて、何回か作業をすれば目的としたものは作れます。
1回でやろうとすると、そうとう時間がかかることや、関数記述ミスなどから、危険度が大きく、あとで、間違えて集計してしまい提出後に「間違えた」ではすまないので、わたしは、一回で計算するようなことはしません。
それと、どちらかというと、こういう分けた作業のほうが時間的に速く、出た結果も検証がしやすいです。 とくに、excelで複雑な関数を作る人がいまが、excelは関数が見えないので、あとで点検するのにすごい労力がかかりわたしは時間の無駄のように考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一つのシートの中に複数のペー...
-
WEB上の表の列コピー選択方法は?
-
エクセルで作成した縦に長い表...
-
メモ帳からエクセルに貼り付け...
-
Excelピボットテーブルで 総計...
-
Excelの数式のコピーで列移動で...
-
エクセルのリストから欠番を拾...
-
オートフィルタのリストを順番...
-
エクセルの関数の使い方 繰越...
-
Excel 表から値をさがして隣の...
-
エクセルVBAで、行コピーを複数...
-
エクセルに詳しい方、助けてく...
-
【エクセル】行挿入で数式もい...
-
エクセルのソート機能について
-
Excelセルのたて、横の並...
-
エクセル シートのコピーをリ...
-
エクセルをワードに変換
-
勤続年数の平均を求めたい時の関数
-
Excelでセル参照したとき、書式...
-
エクセルの色も=イコールでき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WEB上の表の列コピー選択方法は?
-
一つのシートの中に複数のペー...
-
エクセルで作成した縦に長い表...
-
オートフィルタのリストを順番...
-
【エクセル】行挿入で数式もい...
-
メモ帳からエクセルに貼り付け...
-
Excelピボットテーブルで 総計...
-
Excel 表から値をさがして隣の...
-
エクセルのリストから欠番を拾...
-
エクセルの関数の使い方 繰越...
-
ピボットテーブル→参照が正しく...
-
Excelの数式のコピーで列移動で...
-
エクセルVBAで、行コピーを複数...
-
Excelで検索結果をテキストボッ...
-
エクセルの列幅
-
PDFからExcelに変換する時に「...
-
ACCESSのデータをEXCELに貼り付...
-
エクセルに詳しい方、助けてく...
-
地番を順に並べたい。
-
VBA csvを100万行ずつ各...
おすすめ情報
紛らわしくてすみません!!
例に挙げたABC、BCDは重複しますが各1、計2と、カウントせず、2個でも1個とします。