[[20160419230350]] 『品番があれば品名を書き換え』(ねい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『品番があれば品名を書き換え』(ねい)

A B F G
1 あ 5きゃ
2 い
3 う
4 え
5 お

分かりにくいとは思いますが、
どうかご伝授ください。
A列に品番
B列に品名
があります。

F列に新商品の品番5
G列に新商品の品名きゃ を入力したとき
B列の品番5の品名を きゃ に書き換えたい

のですが、どうしたらよいか教えていただけませんでしょうか。

< 使用 Excel:Excel2002、使用 OS:WindowsVista >


 >>F列に新商品の品番5 
 >>G列に新商品の品名きゃ を入力したとき

 F1とG1だけではなく F列、G列に、どんどん新商品を書きこんでいくのですね?

 >>B列の品番5の品名を きゃ に書き換えたい 

 数式は、他のセルの値を参照して、数式が書きこまれた自分自身のセルの値を変更するものですよね。
 他のセルに書きこむことは不可能です。

 ということは 数式は B列に記述しなければいけなくなりますが、B列は入力欄ですよね。
 仮に何かしらの数式が書かれていたとしても入力すれば数式がなくなってしまいます。

 VBA処理になると思いますね。

 シートタブを右クリックしてコードの表示を選んででてくるところに 以下を貼り付け、右上のXボタンクリックで
 シートに戻り、F列、G列 に 品番や商品名を入れてみてください。

 Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    Dim z As Variant
    Dim r As Range
    Dim dF As Variant
    Dim dG As Variant

    Set r = Intersect(Target, Columns("F:G"))

    If r Is Nothing Then Exit Sub
    Application.EnableEvents = False

    For Each c In r
        dF = c.EntireRow.Range("F1").Value
        dG = c.EntireRow.Range("G1").Value
        If Not IsEmpty(dF) And Not IsEmpty(dG) Then
            z = Application.Match(dF, Range("A1", Range("A" & Rows.Count).End(xlUp)), 0)
            If IsError(z) Then
                MsgBox dF & " は存在しません。品名書き換えをスキップします"
            Else
                Cells(z, "B").Value = dG
            End If
        End If
    Next

    Application.EnableEvents = True

 End Sub

(β) 2016/04/20(水) 06:27


 たとえば B列を変更せず、A,B列と F,G列の処理結果を H,I列に表示するといったことでもいいのなら

 H1 : =IF(A1="","",A1)
 I1 : =IF(A1="","",IF(ISNUMBER(MATCH(A1,F:F,0)),INDEX(G:G,MATCH(A1,F:F,0)),B1))

 H1:I1 を下にフィルコピー とか?

(β) 2016/04/20(水) 09:42


お二方様 大変ありがとうございました。
どちらも大変参考になりました。
(ねい) 2016/04/20(水) 18:34

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.