• 締切済み

エクセルで、条件をもとにデータを整理するには

回数 名前 回答 日付 1回目登録 やすこ はい 3月4日 1回目登録 まつこ いいえ 3月2日 1回目登録 えいこ はい 3月1日 2回目登録 えいこ はい 3月2日 1回目登録 たかこ いいえ 3月1日 2回目登録 たかこ いいえ 3月4日 1回目登録 まきこ はい 3月1日 2回目登録 まきこ いいえ 3月1日 1回目登録 あいこ いいえ 3月2日 2回目登録 あいこ はい 3月5日 このようなデータあり、以下の6つの条件をもとに整理すると・・・ 1回しか登録していない人が、「はい」と答えたら、その行は残します。 1回しか登録していない人が、「いいえ」と答えたら、その行は削除します。 1回目2回目とも登録し、両方「はい」と答えたら、日付が古い方を削除します。 1回目2回目とも登録し、両方「いいえ」と答えたら、2行とも削除します。 1回目で「はい」、2回目で「いいえ」と答えたら、2行とも削除します。 1回目で「いいえ」、2回目で「はい」と答えたら、1回目を削除します。 このようになるはずです。 回数 名前 回答 日付 1回目登録 やすこ はい 3月4日 2回目登録 えいこ はい 3月2日 2回目登録 あいこ はい 3月5日 これをどのように作業したらよいか、お分かりでしょうか? 宜しくお願いいたします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 以下の様な方法は如何でしょうか。  今仮に、A列が回数欄、B列が名前欄、C列が回答欄、D列が日付欄、であるものとして、1行目は項目名が記入されていて、データは2行目以下に入力されているものとします。  まず、E2セルに次の関数を入力して下さい。 =IF(OR(AND(COUNTIF(INDEX($A:$A,ROW()):INDEX($C:$C,ROW()),"*?")=0,INDEX($D:$D,ROW())=""),AND(INDEX($C:$C,ROW())=" はい",INDEX($D:$D,ROW())=SUMPRODUCT(MAX(INDEX($D:$D,ROW($D$1)+1):INDEX($D:$D,MATCH(9^9,$D:$D))* (INDEX($B:$B,ROW($D$1)+1):INDEX($B:$B,MATCH(9^9,$D:$D))=INDEX($B:$B,ROW())))*1))),""," 削除")  次に、E2セルをコピーして、E3以下に貼り付けて下さい。  すると、名前欄に同じ名前が入力されている行の中で、日付が最も新しく、且つ、回答が「はい」である場合のみ何も表示されず、日付が最も新しいものではない場合や、回答が「はい」以外の場合には、E列に「削除」と表示されます。  そこで、Excelの並べ替え機能(AとZと↓が組み合わさったデザインのボタン)を使用して、E列を基準に行を並べ替えてやれば、E列に「削除」と表示されている行を一まとめに出来ますので、その行範囲をまとめて削除されると良いと思います。

関連するQ&A

専門家に質問してみよう