• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 条件付書式設定の数式)

エクセル条件付書式設定の数式

このQ&Aのポイント
  • エクセルにてSheet1のC列での関数に関して教えていただきたいです。関数かVBAでの対処方法を宜しくお願いいたします。
  • 販売記録で、Sheet1で新規登録時、販売価格は、Sheet2のリストから取得。Sheet2の価格を変更した際、Sheet1の販売履歴(入力済)の価格は変更させない。過去の登録時のままの価格。
  • Sheet1の商品名が空白でない場合、sheet2の商品一覧リストから同名商品の販売価格を同行のCにいれる。さらに、条件としてSheet2の価格は変動する為、条件として、Sheet1の数量D列がならSheet2から価格をもってくる。D列がない場合、過去の販売履歴時の、価格のまま。という操作をやってみようとして、つまりました。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

以前の販売価格を変えないというのならVBAですね。関数では無理です。 Sheet1にVBAで Private Sub Worksheet_Change(ByVal Target As Range) Dim hinmei As Range If Target.Column = 2 And Target.Row >= 2 Then  'B列2行以降を変更の場合 For Each hinmei In Worksheets("Sheet2").Range("B2:B90")  'Sheet2のB2:B90の商品名を範囲指定 If hinmei = Target Then  '商品名が一致したら Target.Offset(0, 1) = hinmei.Offset(0, 2)  '入力セルの右セルに一致した商品名の2つ右セルの販売価格をSET Exit For  'For Each Nextから抜ける End If Next hinmei End If End Sub

AN-ALPACA
質問者

お礼

mshr1962様  アドバイスありがとうございました。 アドバイスを参考にさせていただき、実現できました。 ありがとうございます。 実際、Sheet1にVBAで入力した内容ですが、以下のとおりです。 ありがとうございました。 Private Sub Worksheet_Change(ByVal Target As Range) Dim hinmei As Range 'B列2行以降を変更の場合 If Target.Column = 2 And Target.Row >= 2 Then 'Sheet2のA2:B90の商品名を範囲指定 For Each hinmei In Worksheets("Sheet2").Range("A2:B90") '商品名が一致したら If hinmei = Target Then '入力セルの右セルに一致した商品名の2つ右セルの販売価格をSET Target.Offset(0, 1).Value = hinmei.Offset(0, 1).Value Target.Offset(0, 3).Value = hinmei.Offset(0, 2).Value 'For Each Nextから抜ける Exit For End If Next hinmei End If End Sub