• 締切済み

エクセルファイルで

エクセルのシートに    A    B   C      D    E   F 1 営業所  所属   氏名    あ講習  い講習 う講習 2 A支店  営業部  ○○○男   ○ 3 A支店  業務課  ○川○子   ○    ○ 4 B支店  営業部  ○山○太        ○   ○  5 C支店  経理部  ○本○美   ○        ○ このようなデータが たくさん入っています。 各講習を 受講している人の支店名・所属・氏名を  講習の講師にお知らせするための文書を発行するのですが、 ○から 講習名ごとに 支店名・所属・氏名を集めるには どのように するのが 良い方法でしょうか? 文書のほうは、ワードで作られていますが エクセルに 変えることも可能です。 前任のかたは、手書きで写していたそうですが データも多く 困っています。どうか 教えてください。 ただ 出来れば、マクロを使わずにするほうが望ましいそうです。 と言うのも、移動の多い職場で、 私が今している役割を パソコンが得意でない人が 引き継ぐ可能性が高いので、少々重くなっても 今までも差し込み印刷・関数等のみで対応していたようです。 個人的には、初心者ですが マクロも学んでいる最中ですので、 どちらのやり方も 勉強したいです。 どうぞ よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

作業列を使ってよいなら、自称imogasi方式でできます。 OKWAVEで「imogasi方式」で照会すれば、相当数出るはずです。 要点は講習の種類列ごとに、どこか使わない列に(J列と決める場合)J2に =IF(E2="○",MAX($J$1:J1)+1,"") と入れて最終行まで(超えても可)式を複写。 E列が○の行に、上から連番を振るわけです。、 F2:F5は 1 2 3 となる。 Sheet2に行って A2に =INDEX(Sheet1!$A$2:$E$100,MATCH(ROW()-1,Sheet1!$J$2:$J$100,0),COLUMN()) と入れて、E2まで式を複写。$100は適当に最終行を見積もって 修正すること。 A2:E2をE2で+ハンドルを出して下へ引っ張る。 Sheet2の行数を基にSheet1のJ列の数字を探し、列ごとに値を持ってくるわけです。 結果 2 A支店 営業部 ○○○男 ○ 3 A支店 業務課 ○川○子 ○ 5 C支店 経理部 ○本○美 ○ #N/A #N/A #N/A #N/A #N/A が出ないようにするのは A2での式を =IF(ROW()-1>MAX(Sheet1!$J$1:$J$100),"",INDEX(Sheet1!$A$2:$E$100,MATCH(ROW()-1,Sheet1!$J$2:$J$100,0),COLUMN())) にします。 以下複写します。 VBAでは Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet3") k = 2 d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d '比較処理 '--- If Cells(i, "E") = "○" Then '-- For j = 1 To 6 'F列までの場合 sh2.Cells(k, j) = sh1.Cells(i, j) Next j k = k + 1 End If Next i End Sub ーーー 他の方法に、 ソートー切り取り フィルタオプション などもあります。 VBAでも上記をVBA化できます。

参考URL:
いも
taa1031
質問者

お礼

お礼が大変遅くなり申し訳ありません。 ありがとうございました。 検索しつつ、やってみます。

  • kito2002
  • ベストアンサー率29% (32/107)
回答No.2

<データ>→<並べ替え> で「最優先されるキー」を講習名(あ講習とか)に設定します。 ○がついたデータがまとまりますから、あとは加工するなり、印刷するなり。 元データをこわさないように、シートごと別にコピーしてやるといいのでは。

taa1031
質問者

お礼

お返事、遅くなりました。すみません。 ありがとうございます。 細かい情報を書き漏らしてしまいましたが、 数百のデータがありますので、 並び替えでは、難しいです。 さまざまな方法を模索してみようと思います。

  • singonana
  • ベストアンサー率28% (35/125)
回答No.1

フィルターを使うのが、一番簡単です。 「A支店業務課○川○子」さんには、「あ講習」と「い講習」の お知らせが別々に出ちゃいます。 「あ講習」と「い講習」のお知らせを1枚にまとめて出したいなら、 「あい講習」を別のセルを追加しないとだめですね。

taa1031
質問者

お礼

お返事、遅くなりました。すみません。 ありがとうございます。 細かい情報を書き漏らしてしまいましたが、 数百のデータがありますので、 フィルタでは、難しいです。 さまざまな方法を模索してみようと思います。 ありがとうございました。

関連するQ&A