[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件の番号を組み合わせた該当するものだけを抽出』(初心)
下記のように、条件の合うものだけを抽出しようと思いますが、どのような関数を使えばよいのか。また、こんなことが、Excelでできるのかもわかりませんが、ご教授して頂けませんでしょうか。マクロでもよいのですが、いまいち関数の知識よりありません。よろしくお願い致します。
1.Excelでの処理をする時に、1〜10の条件があります。
2.500名ほどの氏名等の入ったデータを別シートに作っておく。
(氏名などの前にA列は1B列2C列3D列4E列5F列6G列7H列8I列9J列10K列・・・・・のように該当する条件を入れたデータを作成しておく)
また、各列の該当箇所のセルを番号でなく「○」を付けるという方法もあります。
3.下記のように条件の番号を組み合わせたものに該当するものだけを別シートに入力することで、氏名を抽出して表示させたい。
4.必要であれば、作業用シートとして、1だけを抽出するシートを作る。(以下、2〜10までのものも同じようにそれぞれ作る)
条件(これ以上に増える可能性がある)
1 住所が会社から30キロ圏内の人
2 住所が会社から50キロ圏内の人
3 住所が会社から70キロ圏内の人
4 週3日しか活動できない人
5 営業課の人を優先する
6 独身者は省く
7 人数の制限が5名である
8 人数の制限が2名である
9 人数の制限が1名である
10 条件が必要でない人
条件の組み合わせたものから抽出された氏名
1_4_5____田中太郎
2_4______中村花子
6_9______鈴木道夫
3_4_5_8__小林成約
< 使用 Excel:Excel2016、使用 OS:Windows10 >
まずレイアウトがご提示の説明では全く分からないので回答が出来ません。
A列:氏名 B列:住所 C列:年齢
のように項目と位置関係が分かるように説明して下さい。
おそらく手作業になりますけどフィルターオプションを使うのが最も一般的な方法と思います。
フィルターオプションの操作をマクロ記録すればコードは得られます。
それぞれ「フィルターオプション 使い方」「マクロ記録」で検索して下さい。 此方は文章だけの説明になるので、初心者に説明するのは非常に難しいので。 検索で出てくるサイトなら図解入りで分かりやすく説明してくれています。
数式を使って表示させたいのでしたら、レイアウトの位置関係や、 距離や年齢と言った数値を扱うデータのデータ型や、条件の指定方法など、 かなり細かく、かつ分かりやすく説明して頂かないと出来ませんので、お勧めしません。
(sy) 2018/05/13(日) 17:54
フィルターオプションの操作をマクロ記録すればコードは得られます。
これをまずは、理解した上でどのように組み立てるか、よく考えてから、改めて質問させて頂きたいと思います。ありがとうございました。
(初心) 2018/05/13(日) 20:04
A B C D E F G H I J K L
1 住所30 住所50 住所70 週3日 営業課 独身者省 人数5 人数2 人数1 無条件 ID NM
2 1 1 0 0 0 1 1 0 0 1 10001 JYU B1
3 0 0 1 0 1 0 0 1 0 1 10002 JYU C1
4 1 0 1 0 1 1 0 1 1 1 10003 JYU D1
5 1 1 0 1 1 0 0 1 0 1 10004 JYU E1
新規BOOKに"Sheet1"と"Sheet2"を用意し、 上記表を"Sheet1"に500件ほど作成してください。 条件は1が該当する。0は該当しないです。"Sheet1"の O1は作業セルで使用しています。 下記コードは全て標準モジュールにコピペしてください。 恐怖の憶測と推測コードですので。新規BOOKにてお試しを。 ^^; 間違っていましたらお許しを。。。m(_ _)m。。。
Option Explicit
Sub start()
Dim sh01 As Worksheet, sh02 As Worksheet
Set sh01 = Worksheets("Sheet1")
Set sh02 = Worksheets("Sheet2")
sh02.Activate
sh02.Range("1:500").ClearContents
sh01.Range("O1") = sh02.Name
If sh02.Buttons.Count = 0 Then
Call set_btn(sh02)
End If
MsgBox "一行目に、A列より右へ条件番号1〜10を" & Chr(10) & _
"各セルに入力し、BTNを押して下さい。"
End Sub
Private Sub main()
Dim sh01 As Worksheet, sh02 As Worksheet
Dim i As Long, j As Long, buf, rr As Range, r As Range, jg As String
Set sh01 = Worksheets("Sheet1")
Set sh02 = Worksheets(sh01.Range("O1").Value)
buf = Array("DUMY", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
Set rr = sh02.Rows(1).SpecialCells(2)
j = 3
For i = 2 To sh01.Cells(sh01.Rows.Count, 1).End(xlUp).Row
For Each r In rr
If sh01.Range(buf(r) & i).Value Then
jg = jg & "T"
End If
Next r
If Len(jg) = rr.Count Then
sh02.Cells(j, 2) = sh01.Cells(i, 11)
sh02.Cells(j, 3) = sh01.Cells(i, 12)
j = j + 1
End If
jg = ""
Next i
Call m1btn_del
End Sub
Private Sub set_btn(ByVal sh As Worksheet)
Dim br As Range
Set br = sh.Range("F3:G4")
With sh.Buttons.Add(br.Left, br.Top, br.Width, br.Height)
.OnAction = "Module1.main"
.Characters.Text = "BTN"
End With
End Sub
Private Sub m1btn_del()
Dim btn As Object
For Each btn In ActiveSheet.Buttons
btn.Delete
Next
End Sub
(隠居じーさん) 2018/05/14(月) 09:52
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.