• ベストアンサー

エクセルで文言によってテキストを飛ばす方法

エクセルで、セルA1に「不合格」と入力したら、 B列の最終行を見つけ出し、セルC1の「再試験が必要です」を自動で反映させたいのです。 イメージ添付しました。 Excel2010を使用しています。 どなたかご存じでしたら、ぜひお教え下さい。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 たびたびごめんなさい。 >セルC1の「再試験が必要です」を・・・ を見逃していました。 ↓のコードに変更してください。 尚、A1セルに「不合格」以外のデータが入った場合、 B列最終行がC1セルと同じ場合はそのデータは消去するようにしてみました。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Target.Address = "$A$1" Then If Cells(Rows.Count, "B").End(xlUp) = Range("C1") Then Cells(Rows.Count, "B").End(xlUp).ClearContents End If If Target = "不合格" Then Cells(Rows.Count, "B").End(xlUp).Offset(1) = Range("C1") End If End If End Sub 'この行まで 何度も失礼しました。m(_ _)m

yamayama456
質問者

お礼

tom04 さん、こんにちは! バッチリできました! >B列最終行がC1セルと同じ場合はそのデータは消去 ↑ 感激です!!ここまで思いつきませんでした。 大変助かりました。 ご親切に、どうもありがとうございましたm(_ _)m

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! VBAになってしまいますが・・・ 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストし、Excel画面に戻ってA1セルにデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Target.Address = "$A$1" Then If Target = "不合格" Then Cells(Rows.Count, "B").End(xlUp).Offset(1) = "再試験が必要です" End If End If End Sub 'この行まで ※ とりあえずB列最終行の下のセルに表示するようにしていますが、 何度も「不合格」をA1セルに入力するたびに「再試験が必要です」が並んで表示されます。m(_ _)m

yamayama456
質問者

お礼

>何度も「不合格」をA1セルに入力するたびに「再試験が必要です」が並んで表示されます。 ↑ いえいえ、入力するたびに表示される方がいいです。 ありがとうございます。

関連するQ&A