• ベストアンサー

表の中から条件に合う値を複数検索する方法(Excel又はAccess)

Excel、Accessのいずれでも構いません。 <表1>のシート(テーブル)があった場合に、<表2>のように担当者ごとの取引先を検索してきて複数の値を列記する方法を教えてください。 クエリや関数式など、どのような方法でも結構です。 <表1> 取引先  担当者 A社   佐藤 B社   佐藤 C社   田中 D社   佐藤 E社   村井 F社   村井 G社   田中 ・    ・ ・     ・ ・     ・ <表2> 担当者  取引先 佐藤  A社 B社 D社 田中  C社 G社 村井  E社 F社  ・   ・  ・   ・  ・   ・ やりたことは、差し込み印刷で各「担当者」に、それぞれが担当する「取引先」を通知する文書を作成することです。 「取引先」は、同じセルになっても構いませんし、もちろん違っていても構いません。 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>しかし、正直言ってよく分かりません。 どういう部分がわからないのでしょうか・・ 表1というシートのA1のセルから質問文のようなデータが並んでいて 表2というシートにA1のセルから質問文のようなデータに転記します。 ALT+F11キーでVBEを起動し ThisWorkbook をダブルクリックして貼り付けます。 シートからマクロの実行で選んで実行します。

snowmaker
質問者

お礼

上手くいきました。 ご丁寧なご回答をいただき、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

Access2002で試しました。 表1をTBL1(テーブル名)とすると 新規クエリを作成し(クエリ1) そのSQLビューに SELECT TBL1.取引先, TBL1.担当者, DCount("*","TBL1","取引先<='" & TBL1.取引先 & "' and 担当者='" & TBL1.担当者 & "'") AS 連番 FROM TBL1; とし、 このクエリ1を元にクロス集計クエリを作ってSQLビューには TRANSFORM First(クエリ1.取引先) AS 取引先の先頭 SELECT クエリ1.担当者 FROM クエリ1 GROUP BY クエリ1.担当者 PIVOT クエリ1.連番; でいけるかな~?

snowmaker
質問者

お礼

なるほどクエリを元にクロス集計クエリを作るという方法もあるんですね。 参考になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

Sheet1のA列に取引先、B列に担当者が入力されていて、D列とE列に表2を作成すると仮定します。 1.まず表1(A列とB列)を担当者で並び替えます。 2.以下のマクロを実行します。 Sub test() Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer Worksheets("Sheet1").Range("d1").Value = Worksheets("Sheet1").Range("b1").Value a = 0 b = 0 d = 0 e = 0 Do While Worksheets("Sheet1").Range("b1").Offset(b, 0).Value <> "" If Worksheets("Sheet1").Range("d1").Offset(d, 0).Value = _ Worksheets("Sheet1").Range("b1").Offset(b, 0).Value Then Worksheets("Sheet1").Range("e1").Offset(d, e).Value = _ Worksheets("Sheet1").Range("a1").Offset(a, 0).Value a = a + 1 b = b + 1 e = e + 1 Else d = d + 1 Worksheets("Sheet1").Range("d1").Offset(d, 0).Value = _ Worksheets("Sheet1").Range("b1").Offset(b, 0).Value e = 0 End If Loop End Sub EXCEL2003使用 動作確認はしていますが、上手く動かない場合はご容赦ください

snowmaker
質問者

お礼

上手くいきました!ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

Public Sub 処理() Dim base As Range, i As Long Dim 担当者 As String, 取引先 As String Dim List, wk Set List = CreateObject("Scripting.Dictionary") Set base = Sheets("表1").Range("A2") i = 0 Do While (base.Offset(i).Value <> "") 取引先 = base.Offset(i).Value 担当者 = base.Offset(i, 1).Value If Not List.Exists(担当者) Then '始めてでてくる担当者を登録 List.Add 担当者, 取引先 Else '重複する場合、連結する List.Item(担当者) = List.Item(担当者) & " " & 取引先 End If i = i + 1 Loop Sheets("表2").Cells.ClearContents '書き出しシートのクリア Sheets("表2").Cells(1, 1).Value = "担当者" Sheets("表2").Cells(1, 2).Value = "取引先" i = 2 For Each wk In List.keys Sheets("表2").Cells(i, 1).Value = wk Sheets("表2").Cells(i, 2).Value = List.Item(wk) i = i + 1 Next Set List = Nothing End Sub

snowmaker
質問者

お礼

早速ご返信いただきありがとうございます。 しかし、正直言ってよく分かりません。 もう少し分かりやすいものをご紹介いただければ嬉しいです。 わがまま申し上げてすみません。よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel2003 3つの条件を満たす値の摘出

    行と列の交わるところの値を摘出したいのですが、条件が3つになってしまいます。 例えば 「1月のA社の入金は?」と言う具合です。表は下記のような感じです。     A   B    C    D    E     F    G 1           1月分            2月分 2  社名 請求  入金 手数料  請求  入金  手数料 3  A社  500   500   0    600    0    0 4  B社  300     0   0     0    0    0 5  C社  800   695  105   800   695   105 *B-D,E-Gはセルを結合してあります。結果はA10に出るようにします。 どんな計算式を使えばいいのか教えてください。 言いたい事がわかりずらいかもしれませんが、よろしくお願いします。

  • ACCESSでクロス表

    ACCESSで、以下のようなデータがあります。 会社 製品 担当 A社 A1 山田 A社 B1 田中 B社 C1 佐藤 B社 A1 中村 これを、クロス表のように    A1 B1 C1 A社 山田 田中 B社 中村    佐藤   というようにまとめたいのですが可能でしょうか。 各社とも製品に対する担当者は1名です。重複しません。 クロス集計では、カウントや合計になってしまうので、なかなかうまくいきません。 できれば、VBAを使わないほうがベストですが。 よろしくおねがいします。

  • 進捗管理表のある条件なかで最新日程を検索したい

    こんにちは。 以下の様な項目で営業の進捗管理表を作っています。 いま検索したい条件は「面談出来た最新日程」です。 色々と試して、表示できたと思うと。イレギュラーが拾えません。 例)2回目の訪問が不在だけれども、3回目の訪問が面談だった日程など まだまだ関数を使いこなせていないです。 何方かお知恵を貸していただけませんか? エクセルは2013です。 宜しくお願いします。    A     B     C     D     E     F     G     E     F     G    1  社名   訪問  面・不  面談者  訪問日 面・不  面談者  訪問日  面・不  面談  2  A社   4/20   面談  担当    5/9   面談   担当    5/15   面談  担当 3  B社   4/20   面談  決裁者  4/25   TEL   決裁者   5/2   TEL  決裁者 4  C社   6/6   面談         7/11   不在          7/14   不在 5  D社   4/5   面談  決裁者   6/6   不在          6/15   面談 決裁者 6  E社   5/29 7  F社   5/29 8  G社 9  H社 10  I社   4/17   不在         4/18   不在         4/20    不在

  • Excel複数条件 日付について

    Excelで複数条件である文字列をカウントをしたいと思っています。 sheet1   A    B   C   D   E    G   H  1     10/1 10/2 10/3 10/4・・・11/1 11/2 2 鈴木 出勤                 出勤 3 佐藤     出勤          出勤 出勤 4 田中 出勤        出勤 sheet2   A  B   C 1    10月 11月 2 鈴木 1  1 3 佐藤 1  2 4 田中 2  0 sheet1の出勤した日をsheet2の月別に出勤の文字列をカウントしたいのですが 現在は10月のセルに=COUNTIF(sheet1!B2:E2,"出勤")、11月のセルに=COUNTIF(sheet1!G2:H2,"出勤")と入力しています。 これを名前と月を条件に出勤のカウントをとれる関数はありますでしょうか。 宜しくお願いいたします。

  • 表の値を組み合わせて新しい表を生成したい

    表の値を組み合わせて新しい表を生成したい 元となる表は↓のようなものです。 0  0501  A 1  0502  B 2  0503  C 3  0504  D 4  0505  E 5  0506  F 6  0507  G 7       H 8 9 10 これをもとに繰り返し処理を行い、↓のような新しい表を生成したいのです。         A  B  C  D  E  F  G  H 0  0501 0  0502 0  0503 0  0504 0  0505 0  0506 0  0507 1  0501 1  0502 1  0503 1  0504 1  0505 1  0506 1  0507 2  0501 2  0502 2  0503 2  0504 2  0505 2  0506 2  0507 3  0501 3  0502 3  0503 3  0504 3  0505 3  0506 3  0507 ・ ・ ・ VBAもOKwaveも初心者です。あつかましいのですが、どなたかVBAの例文を作っていただけないでしょうか・・・ ようするには、もとの表の値を使って、集計表を作りたいのです。

  • 複数条件の設定(EXCEL)

    次のような表を作っています。 A列     B列    C列      D列 営業担当  金額  サポート担当  金額  Aさん   ○○円  Dさん     ○○円  Bさん   ○○円  Eさん     ○○円  Cさん   ○○円  Fさん     ○○円  Aさん   ○○円  Fさん     ○○円  Bさん   ○○円  Dさん     ○○円 「C列がFさんで、A列がAさんかBさんの場合、D列を返す」 というものです。 SUMPRODUCTを使ってやってみたのですが、良くわかりません。 回答よろしくお願いします。

  • 複数の表を一つにしたい。

    表1(2001年) A(施設名) 91(人数) B      75 C       8 D      32 表2(2002年) A 102 C  11 D  50 E  29 F  74 表3(2003年) A  89 D  43 E  25 F  71 G  22 表4  年 2001 2002 2003 A 91 102 89 B 75  -  - C  8  11 - D 32  50 43 E  -   29 25 F  -   74 71 G  -  -  22 上のように、1~3の3つの表を1つの表(表4)にしたいのですが、どうやったらいいかわかりません。(エクセル2000) 表1が2001年、表2が2002年、表3が2003年のもの、アルファベットが施設名、数字は客数です。 ですので、あったものがなくなったり、前年まであったものが翌年にはない場合もありますし、総施設数も毎年変動します。 施設数は数百ありますので、表を見比べながら記入していくのではなく、どうにかエクセルでの操作でしたいのですが、できるのでしょうか? 説明不足がありましたら、補足しますので、よろしくお願いします。(わかりにくい説明ですみません。)

  • excelデータの切り貼りマクロ

    excelマクロの初心者です。 データの切り貼りをするマクロについて教えてください。 以下のような担当者と会社名の入った縦に大きなデータを 担当 社名 佐藤 A社 佐藤 B社 佐藤 C社 田中 D社 田中 E社 田中 F社 鈴木 G社 鈴木 H社 鈴木 I社 高橋 J社 高橋 K社 高橋 L社 最終的に 佐藤 田中 鈴木 高橋 A社 D社 G社 J社 B社 E社 H社 K社 C社 F社 I社 L社 このように一番上に担当者、下に該当する社名を羅列されるように切り貼りをしたいと思っています。 ファイルがいくつもあり、また行数はファイルごとに異なり一定ではありません。 マクロでどのように書いたらよいかご教授頂けないでしょうか。 よろしくお願いいたします<(_ _)>

  • 【Excel】複数条件の個数集計表について教えて下さい!

    教えて下さい! 以下のようなシフト表があります。 月|日|研修名|コード|人数|担当者|コード|… 5  1  Excel   T-1   5   田中   1 5  2  Word    T-3   4   佐藤   5 5  3  Excel   T-1   4   鈴木   3 5  4  Access   T-2   3   佐藤   5 ”5月に田中さんはExcelの研修を○回やった”といったような集計表を研修ごと・担当者毎に作成したいと思っています。 ”この担当者がこの研修”といったようには決まっていません。 全ての担当者がすべての研修を受け持ちます。 最終的には集計表を以下のようにまとめたいと思っています。              |田中|佐藤|鈴木  Excel  |  |  | Access|  |  | Word  |  |  | 1ヶ月のシフト表のような形なので空白(研修が無いとき)もあります。 そしてできれば1ヶ月1枚のシートで1年分作成し、1年分の集計も取りたいと思います。 計算式としては”研修がT-1で尚かつ担当者が1のものをこのフィールド内でカウントする”といったようなものになるかと思うんですが、うまくいきません。 困っています。教えて下さい。 宜しくお願いします。

  • 関数で2つの条件から抽出する表を作りたい。

    A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。 上手く出来なくて1行しか抽出しないんです。  A   B  C      D   E   F  G   H 1担当者 沼田 週    1 2 番号 日付 週 担当 企業 名前 住所 検索用 3 1 7月1日 1 沼田 a 高橋 土浦 沼田1 4 2 7月2日 1 佐藤 a 山田 阿見 佐藤1 5 3 7月2日 1 沼田 r 沖田 水戸 沼田1 6 4 7月7日  1 沼田 c 斎藤 土浦 沼田1 7 5  7月9日 2 佐藤 h 鈴木 牛久 佐藤2 8 6 7月14日 3 佐藤 d 河合 土浦 佐藤3 9 7 7月15日 3 高橋 e 吉田 阿見 高橋3 10 8 7月20日 4 高橋 e 木田 水戸 高橋4 11 9 7月4日 1 沼田 g 飯田 牛久 沼田1 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) シート2     A   B   C  D  E  F  G 1  担当 沼田 週 1 2  番号 日付  週  担当  企業  名前   住所 3  1  7月1日  1  沼田   a    会田   牛久 4  4  7月2日  1  沼田   r   沖田   水戸 5  6  7月7日  1  沼田   c   斎藤  土浦  6  9  7月4日  1  沼田   g   飯田  牛久 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

専門家に質問してみよう