- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 条件付書式設定の数式)
エクセル条件付書式設定の数式
このQ&Aのポイント
- エクセルにてSheet1のC列での関数に関して教えていただきたいです。関数かVBAでの対処方法を宜しくお願いいたします。
- 販売記録で、Sheet1で新規登録時、販売価格は、Sheet2のリストから取得。Sheet2の価格を変更した際、Sheet1の販売履歴(入力済)の価格は変更させない。過去の登録時のままの価格。
- Sheet1の商品名が空白でない場合、sheet2の商品一覧リストから同名商品の販売価格を同行のCにいれる。さらに、条件としてSheet2の価格は変動する為、条件として、Sheet1の数量D列がならSheet2から価格をもってくる。D列がない場合、過去の販売履歴時の、価格のまま。という操作をやってみようとして、つまりました。
- みんなの回答 (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
お礼
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