• ベストアンサー

エクセル:条件に合致する直近の値を遡って検索したい

Excel2013を使っています。 顧客コードを入力した時、C列に、同じ顧客コードの直近の作業内容が表示されるようにしたいです。 作業の続きを、違う日に行うことがあるためです。 例の画像で言うと、C7には「返却」、C8には「入力」という値が入るようにしたいです。 C列に数式を入れておいて、前回と同じ作業の場合は数式の結果を表示し、違う作業をする時は上書きで新しい作業を入力するつもりです。 C列には、どのような数式を入れておけばよいでしょうか?

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

  • ベストアンサー
回答No.2

式では不可能ですので、イベントで実行します。 以下 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html#change を参考に「セルの値が変更されたら発生するイベント」に以下のコードを記述して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 2 Or Target.Count <> 1 Or IsEmpty(Target) = True Or IsEmpty(Cells(Target.Row, 3)) = False Then Exit Sub For i = Target.Row - 1 To 2 Step -1 If Cells(i, 2).Value = Target.Value Then Cells(Target.Row, 3) = Cells(i, 3).Value Exit Sub End If Next End Sub

yoshi1401
質問者

お礼

すばらしいです! やりたいことが、完璧に実現できました。 ありがとうございます! ベストアンサーとさせていただきます。

その他の回答 (1)

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

数式が複雑になり、上書きで新しい作業を入力する場合に記入ミスもあり得ますので、できれば、顧客コードと日付で並べ替えて作業することをお勧めします。

yoshi1401
質問者

お礼

回答ありがとうございます。 補足コメントをご覧ください。

yoshi1401
質問者

補足

日付ごとに行を新しくする必要があるため、顧客コードで並べ替えをしたとしても、前の行と同じ作業内容を再度入力する必要があることに変わりはありません。 また、顧客コードで並べ替えをした場合、ショートカットキーctrl+shift+2 で1つ上のセルの値をアクティブセルにコピーしたい場合は、新しい行を挿入しなければならいのも、不便です。

関連するQ&A