Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2019)
複数行を一行にまとめる方法
投稿日時: 22/06/12 20:04:12
投稿者: とちろう

初めまして。
現在患者管理をExcelでやろうと思っています。
複数行で同じ患者の情報がシステムから出力されており、
これを一行にまとめたいのですがいい方法が思いつきません。
↓各セルに各個人の各時間と担当職員が一行づつあります。
room name time 担当
101 田中陽子 9:00 A
101 田中陽子 11:00 B
101 田中陽子 15:00 C
102 安倍太郎 10:00 D
102 安倍太郎 11:00 E
102 安倍太郎 12:00 F
上記の情報を下記のように患者名ごとに一行にまとめたいのですが、
(時間項目
 
 
 
 room name 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00
 101 田中陽子 A B C
 102 安倍太郎 D E F
 
表示はうまく出来ていませんが、時間の下に担当者の名前が来るようにしたいです
(例:田中陽子Bは11:00の列、安倍太郎のFは12:00の列です)
 
 
よい案をご教示いただけないでしょうか。よろしくお願いします。

回答
投稿日時: 22/06/12 21:46:32
投稿者: simple

どこまでトライされていますでしょうか。
それも含めて書いていただくとよいとおもいます。
 
まだこれから着手ということなら、
これだけだとアレですので、考え方をメモしてみます。
トライしてみてください。
 
まずは、地道に繰り返しを実行する方法です。

・room とnameの列を別シートにコピーしたうえで、
「データ」の「重複の削除」を使えば、患者名の一覧は、できます。
・時刻の一覧は、手作業で作成しておきます。
・各行について、
      ・nameをもとに、それが書き込み先シートの何行目かをApplication.Matchを使って
        求めます。
      ・timeも、時刻行の何列目にあたるかを Application.Matchを使って求めます。
      ・それで、書き込み先のセルが決まりますから、そこに担当者を書き込みます。
・この作業を、最終行まで繰り返せばOKです。

--------------------------
変則技として、ピボットテーブルを使う方法もあるかもしれません。
 
(1)担当の右の列に担当者の連番を振ります。
room  name        time  担当  コード
101   田中陽子    9:00  A     1
101   田中陽子    11:00 B     2
101   田中陽子    15:00 C     3
102   安倍太郎    10:00 D     4
102   安倍太郎    11:00 E     5
102   安倍太郎    12:00 F     6

(2)こうしておいて、ピボットテーブルを使うと、
下記のような表ができあがります。
合計 / コード          time                    
room  name        9時   10時  11時  12時  15時
101   田中陽子    1           2           3
102   安倍太郎          4     5     6     

(3)もう一度、担当者番号を担当者名に置換すれば、望みのものになりませんか?
 
骨格のピボットテーブルは一度作れば、データ変更があれば更新するだけです。
あとは、担当者→担当者コード、その逆の置換マクロを用意すればできそうに思います。
(対応表を作っておいて、VLOOKUPで引いてこれると思います)

回答
投稿日時: 22/06/20 11:37:29
投稿者: Suzu

ピボットテーブルだと、値に文字列を表示できないので、
PowerQueryを使ってはどうでしょう。
 
日本システムアドミニストレータ連絡会
PowerQuery【07】ピボットテーブルの「値」覧に文字を表示する(マトリックス表を作るときに便利)
https://jsdg.org/blog/view037/
 
参考になるかと。

トピックに返信