2017-04-05 2 views
0

誰でも私がスプレッドシートを作成するのを助けることができれば非常に感謝します。私は列1の行ごとに複数の繰り返しIDを持つ簡単なスプレッドシートを持っています。列2の診断タイプをすべて含んでいます。各患者は1から20の異なるバリエーションを持つことができます。行が一意のIDに一致し、列ヘッダーのテキストを含む場合、マクロは新しい列に「1」を入力します

シート(申し訳ありませんが、私は画像を投稿することができませんよ)1

c_ID | Diagnosis 
-----| --------- 
1 | a 
1 | c 
2 | a 
3 | a 
3 | s 
4 | h 
4 | g 
4 | f 

私は、各患者が一列のみになるようにしたいと思いますので、私が作成しました各患者IDの新しいテーブルを1回だけ作成し、次に各診断の列見出しを作成します。

各行におけるシート2

c_ID | a | b | c | d | e ... | s 

、私は戻りたい「1」ここで、患者IDが一致し、その患者IDのために指定された診断の一方が列ヘッダに一致し、「0 'それはしません。

つまり、私はシート2に何かを書いておきたいと思います:シート2のカラム1のc_IDがシート1のカラム1のc_IDと一致すれば、そのc_ID検索シート1のカラム2は、そのc_IDはシート2の列見出し列2-21のいずれかと一致し、そうであれば1を返し、返さない場合は0を返します。

マクロやVBAの作成経験はありませんが、それは可能ですか?私は、これについてもっと良い方法について助言やアドバイスをいただき、非常に感謝しています。

+0

Excelには機能が組み込まれています。マクロを使用する前にピボットテーブルを使用してください。 https://support.office.com/en-us/article/Create-a-PivotTable-to-analyze-worksheet-data-a9a84538-bfe9-40a9-a8e9-f99134456576 –

+0

私は、インデックス(match( ))この問題は、Excel式を使用して解決できます。 – Luuklag

+0

偉大な - 入力していただきありがとうございます - 私のテーブルが完成しました!私が考えていたよりはるかにはっきりと見えるようにしてくれてありがとう! –

答えて

0

値が存在するかどうかに基づいて、1または0を返すvlookupを使用することもできます。 = IF(IFERROR(VLOOKUP(A1、$ A $ 2:$ B $ 20,1、FALSE) 、0)> 0,1,0)

カラム(たとえばA1)にすべての固有のc_ID値がある場合は、上記の式をカラムB2にコピーします。あなたは、あなたがそれを見上げて実行している値の範囲を参照するようにコードを変更する必要があります。したがって、$ A $ 2:$ B $ 20は、元のデータセットにまたがるこれらの値の全範囲に置き換える必要があります(ドル記号を必ず保持してください)。

もう1つのオプションは、$ A $ 2 :$ B $ 20名前付き範囲。あなたはオンラインで簡単な範囲を作成することについて読むことができ、それは非常に簡単です。範囲を指定したら、$ A $ 2:$ B $ 20をあなたの名前に置き換えることができます。この式は機能するはずです。

希望します。

+0

非常に役に立ちました - 私の質問に答える時間をとってくれてありがとう - とても感謝しています。 C –

関連する問題