advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 37667 for IF (0.007 sec.)
[[20070126230757]]
#score: 1591
@digest: 2639690bf20e64a55ae3ba249e0ed95b
@id: 28231
@mdate: 2007-02-06T16:45:21Z
@size: 25819
@type: text/plain
#keywords: 社st (91450), 社op (91450), 社ef (91450), 社ij (91450), pack (72530), 12349 (71506), 乳pa (69740), 缶bo (69740), 水pa (69740), コpa (69740), レbo (69740), 12346 (69123), 12348 (66546), 12347 (64096), 社ab (63521), supp (59699), manuf (59046), 牛乳 (53015), 社缶 (45725), 缶10 (44989), 社チ (43943), 社牛 (42959), コ10 (42672), 社pa (42644), sku (40389), 社水 (39542), 社オ (34278), stock (29340), ョコ (25001), aaaa (20391), ー子 (19922), オレ (18057)
『教えてください VLOOKUPを使いすぎて。。。。』(パー子)
次のようなデーターを作ってみました。 データーが重過ぎてデーターを入力してもVLOOKUPで出てほしいデーターやデーター更新に時 間がかかってしまったり、して使い勝手が悪いです。どうにかしたいのですが、方法はありま すか?教えてください。(今現在12MBです。) シート1(Supp)のデーター A B C D 1 Supp Code Manuf Type 2 100 1 aaaa社 Box 3 100 2 aaaa社 pack 4 101 1 bbbb社 pack 5 102 1 cccc社 Box 6 103 1 dddd社 pack 〜 シート2(SKU)のデーター A B C D E F G H I J K 1 S SKU SKU SKUSub Supp Code Manuf RefNo NAME Type Cost Retail 2 12345-1 12345 1 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 3 12346-1 12346 1 100 2 aaaa社 EFGH 水 pack 2.6 5.0 4 12347-1 12347 1 101 1 bbbb社 IJKL 牛乳 pack 1.6 2.5 5 12348-1 12348 1 102 1 cccc社 OPQR オレ Box 2.4 4.8 6 12349-1 12349 1 103 1 dddd社 STUV チョコ pack 2.9 6.0 〜 2000 12345-10 12345 10 100 1 aaaa社 ABCD10 缶10 Box 10 20 2001 12346-10 12346 10 100 2 aaaa社 EFGH10 水10 pack 12 24 2002 12347-10 12347 10 101 1 bbbb社 IJKL10 牛乳10 pack 10 20 2003 12348-10 12348 10 102 1 cccc社 OPQR10 オレ10 Box 25 50 2004 12349-10 12349 10 103 1 dddd社 STUV10 チョコ10 pack 60 120 A2〜A2004に=B2&"-"&C2〜B2004&"-"&C2004を入力 FとIはシート1からVLOOKUPで検索 シート3(Order)のデーター A B C D E F G H I J K 1 SKU SKUSub Supp Code Manuf RefNo NAME Type Cost Retail Qty 2 12345 1 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 100 3 12346 2 100 2 aaaa社 EFGH 水 pack 2.6 5.0 200 4 12346 3 100 3 aaaa社 IJKL 牛乳 pack 1.6 2.5 100 5 12345 4 100 4 aaaa社 OPQR オレ Box 2.4 4.8 100 6 12346 5 100 5 aaaa社 STUV チョコ pack 2.9 6.0 100 〜 1000 12345 10 100 1 aaaa社 ABCD10 缶10 Box 10 20 200 1001 12346 10 100 2 aaaa社 EFGH10 水10 pack 12 24 500 1002 12347 10 101 1 bbbb社 IJKL10 牛乳10 pack 10 20 300 1003 12348 10 102 1 cccc社 OPQR10 オレ10 Box 25 50 400 1004 12349 10 103 1 dddd社 STUV10 チョコ10 pack 60 120 500 〜 AB列にデーターを入力するとシート2よりVLOOKUPでFGIJ列にデーターを自動出力 CD列にデーターを入力するとシート1よりVLOOKUPでEH列にデーターを自動出力 シート4(Sales)のデーター A B C D E F G H I J K L 1 SKU SKUSub Qty Supp Code Manuf RefNo NAME Type Cost Retail Pro 2 12345 1 10 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 3 12346 2 20 100 2 aaaa社 EFGH 水 pack 2.6 5.0 4 12346 3 10 100 3 aaaa社 IJKL 牛乳 pack 1.6 2.5 5 12345 4 10 100 4 aaaa社 OPQR オレ Box 2.4 4.8 6 12346 5 10 100 5 aaaa社 STUV チョコ pack 2.9 6.0 〜 20000 12345 10 20 100 1 aaaa社 ABCD10 缶10 Box 10 20 20001 12346 10 50 100 2 aaaa社 EFGH10 水10 pack 12 24 20002 12347 10 30 101 1 bbbb社 IJKL10 牛乳10 pack 10 20 20003 12348 10 40 102 1 cccc社 OPQR10 オレ10 Box 25 50 20004 12349 10 50 103 1 dddd社 STUV10 チョコ10 pack 60 120 〜 AB列にデーターを入力するとシート2よりVLOOKUPでDEFGHIJK列にデーターを自動出力 C列にデーターを入れるとL列に利益が出るようにする。 シート5(Stock)のデーター A B C D E 1 SKU SKUSub Manuf NAME Qty 2 12345 1 aaaa社 缶 20 3 12346 1 aaaa社 水 30 4 12347 1 bbbb社 牛乳 40 5 12348 1 cccc社 オレ 50 6 12349 1 dddd社 チョコ 10 〜 2000 12345 10 aaaa社 缶10 10 2001 12346 10 aaaa社 水10 15 2002 12347 10 bbbb社 牛乳10 20 2003 12348 10 cccc社 オレ10 30 2004 12349 10 dddd社 チョコ10 10 AB列にデーターを入力するとシート2よりVLOOKUPでCD列にデーターを自動出力 E列はシート3と4の集計を行い(SUMIF)残りQTYがいくつかを計算 ---- >データー更新に時間がかかってしまったり 手動計算に設定しておく どのような式が入力してあるのか不明ですが VLOOKUP関数の式を INDEX,MATCH関数に変更 =VLOOKUP(検索値,A:K,11,0) =INDEX(K:K,MATCH(検査値,A:A,0)) VLOOKUP(検索値,A:K,11,0)では、範囲A:K列の値を変更した場合再計算される INDEX(K:K,MATCH(検査値,A:A,0))はA列またはK列に変更があった場合のみ再計算 作業用列が使用できれば直いいですね 作業用列に(X列として) X1=MATCH(検査値,A:A,0) =INDEX(K:K,X1) By しげちゃん ---- これは一切関数を使わん方法です。 新しいブックで試してみてくらはい。 そのブックにそれぞれSupp SKU Order Sales Stock というSheetを作成。 然るべきデータを入力しときます。Suppだけでえんかな? \SKU/を右クリックしてコードの表示を選択そこに下のコードを貼り付けします。 '------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim data As String, i As Long, x, tbl If Target.Count > 1 Then Exit Sub If Target.Column = 2 Or Target.Column = 4 And Target = "" Then Target.Offset(, 1) = "" If Target.Column = 2 Then Target.Offset(, -1) = "" End If Exit Sub End If If Target.Column <> 3 And Target.Column <> 5 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Offset(, -1) = "" Then Exit Sub Application.EnableEvents = False If Target.Column = 3 Then Target.Offset(, -2) = Target.Offset(, -1) & "-" & Target End If If Target.Column = 5 Then With Sheets("Supp") data = Target.Offset(, -1) & "," & Target tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 4).Value ReDim x(1 To 2) For i = 1 To UBound(tbl, 1) If data = tbl(i, 1) & "," & tbl(i, 2) Then x(1) = tbl(i, 3) x(2) = tbl(i, 4) Exit For End If Next i Cells(Target.Row, 6) = x(1) Cells(Target.Row, 9) = x(2) End With End If Application.EnableEvents = True End Sub '----------------------------------- '以下それに準じてコピペします。 ' \Order/ '---------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, data As String, x, tbl If Target.Count > 1 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Column = 1 Or Target.Column = 3 And Target = "" Then Target.Offset(, 1) = "": Exit Sub If Target.Column <> 2 And Target.Column <> 4 Then Exit Sub If Target.Offset(, -1) = "" Then Exit Sub Application.EnableEvents = False If Target.Column = 2 Then With Sheets("SKU") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row - 1, 11) data = Target.Offset(, -1) & "," & Target ReDim x(1 To 1, 1 To 4) For i = 1 To UBound(tbl, 1) If data = tbl(i, 2) & "," & tbl(i, 3) Then x(1, 1) = tbl(i, 7) x(1, 2) = tbl(i, 8) x(1, 3) = tbl(i, 10) x(1, 4) = tbl(i, 11) Exit For End If Next i End With Cells(Target.Row, 6) = x(1, 1) Cells(Target.Row, 7) = x(1, 2) Cells(Target.Row, 9) = x(1, 3) Cells(Target.Row, 10) = x(1, 4) End If If Target.Column = 4 Then With Sheets("Supp") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row - 1, 4) data = Target.Offset(, -1) & "," & Target ReDim x(1 To 1, 1 To 2) For i = 1 To UBound(tbl, 1) If data = tbl(i, 1) & "," & tbl(i, 2) Then x(1, 1) = tbl(i, 3) x(1, 2) = tbl(i, 4) Exit For End If Next i End With Cells(Target.Row, 5) = x(1, 1) Cells(Target.Row, 8) = x(1, 2) End If Application.EnableEvents = True End Sub '------------------------ '\Sales/ '---------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim data As String, i As Long, tbl, x If Target.Count > 1 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Column = 1 Or Target.Column = 4 Then If Target = "" Then Target.Offset(, 1) = "" Exit Sub End If End If If Target.Column <> 2 And Target.Column <> 5 Then Exit Sub If Target.Offset(, -1) = "" Then Exit Sub If Target.Column = 2 Then With Sheets("SKU") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 11) data = Target.Offset(, -1) & "," & Target Application.EnableEvents = False For i = 1 To UBound(tbl, 1) If data = tbl(i, 2) & "," & tbl(i, 3) Then Cells(Target.Row, 4).Resize(, 8) = .Cells(i + 1, 4).Resize(, 8).Value Exit For End If Next i End With End If If Target.Column = 3 Then ''''''''''''''''''''' ''''''''''''''''''''' End If Application.EnableEvents = True End Sub '----------------------------- '\Stock/ '----------------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long, data As String, x, tbl If Target.Count > 1 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Column = 1 Then If Target = "" Then Target.Offset(, 1) = "" Exit Sub End If End If If Target.Column <> 2 Then Exit Sub If Target.Offset(, -1) <> "" Then data = Target.Offset(, -1) & "," & Target With Sheets("SKU") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 11) ReDim x(1 To 2) For i = 1 To UBound(tbl, 1) If data = tbl(i, 2) & "," & tbl(i, 3) Then x(1) = tbl(i, 6) x(2) = tbl(i, 8) Exit For End If Next i End With Cells(Target.Row, 3).Resize(, 2) = x End If End Sub '------------------- これで、完了ですワ。 それぞれのシートに入力してみてくらはい。 関数をべったり入力してあるよりは軽いとおもいまっせぇ。 ただまぁあんさんとこの儲けの定義が解りまへんからそこは未処理になっとります。 単にRetail-Costだけではないでせうから・・・ (弥太郎) ---- しげちゃんさん、弥太郎さんありがとうございます。 弥太郎さんに質問です。マクロを使ったことが無いので、 このプログラムの一行、一行のの意味を教えてくだしゃい。 お願いします。 ---- 遅くなりました〜 SKUのコードやとこんな塩梅になりますワ。 あとは似た処理になっとりますんで、ご自分で割り振ってくらはい。 (弥太郎) Private Sub Worksheet_Change(ByVal Target As Range) Dim data As String, i As Long, x, tbl '変数の宣言 If Target.Count > 1 Then Exit Sub '複数の範囲選択はイベント中止 If Target.Column = 2 Or Target.Column = 4 And Target = "" Then '↑B列D列をクリアしたらC列E列をクリア '↓ Target.Offset(, 1) = "" If Target.Column = 2 Then Target.Offset(, -1) = "" '←B列をクリアしたらA列もくりあ End If Exit Sub End If If Target.Column <> 3 And Target.Column <> 5 Then Exit Sub '入力がC列E列でなければ終了 If Target.Row = 1 Then Exit Sub '1行目の入力はデータ検出に不要なので終了 If Target.Offset(, -1) = "" Then Exit Sub 'B列D列にデータがなければ終了 Application.EnableEvents = False 'チェンジイベントの中止 If Target.Column = 3 Then 'C列のデータが変更になれば Target.Offset(, -2) = Target.Offset(, -1) & "-" & Target 'A2=B2&"-"&C2と同じ働き End If If Target.Column = 5 Then 'E列のデータを変更したら With Sheets("Supp") 'シートSuppの主作業 data = Target.Offset(, -1) & "," & Target 'dataという変数にSKUのD列E列のデータを","で '連結し、検索用データとして格納 tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 4).Value '↑SuppのA2からD列最終行までのでーたを変数tblに格納 ReDim x(1 To 2) '配列変数xにメモリーの再割り当て For i = 1 To UBound(tbl, 1) '変数tblの1行目から最終行まで検索しまっせぇ。 If data = tbl(i, 1) & "," & tbl(i, 2) Then 'もし変数dataと変数tblのi行 '1列目& "," & i行2列目とが一致したら x(1) = tbl(i, 3) '変数xの1にtblのi行3列目のデータを(C列の)格納 x(2) = tbl(i, 4) '変数xの2にtbl(i行4列目)(D列の)に格納 Exit For '一致したばやいはLoopを抜けなさい End If Next i '一致しなければFor i=・・・に戻りなさい Cells(Target.Row, 6) = x(1) '入力した行の6列目(F列)に変数x(1)に格納したデータを出力 Cells(Target.Row, 9) = x(2) '入力した行の9列目(I列)に変数x(2)に格納したデータを出力 End With End If Application.EnableEvents = True 'イベントを元に戻す End Sub ---- 弥太郎さんありがとうございます。 また質問です。 シート2(SKU)のA列に同じ値がきた時にエラーメッセージを 出せるようにしたいのですがどうせれば良いですか? シート3(Order)のデーターのA列にM2&"-"&D2 をできるようにしたいのですが、プログラム上 どのようにすれば良いですか?どこにそのプログラムを入れれば良いですか? 教えてください。 パー子 ---- 1番目についてはSKUのコードを下のコードに差し替えればOKです。 2番目は無理です。っちゅうのはA列B列を元にSKUを検索しとりますから、それが変わ ると検索方法を変更せななりまへん。どの時点でM列に入力されとるかも解りまへんし 入力する順番から申せばA列から右へと移動するのがベターやと思いますが・・・。 (弥太郎) ---- 弥太郎様 一番目の回答が良く分かりません、、、、どのようにプログラムを組めば良いのでしょうか? おしえてくだしゃい。 ---- パー子はんごめ〜ん(汗 コードをカキコするのん忘れとりましたワ。(汗 (汗 かういうことです〜、やれやれ(汗 (弥太郎) Private Sub Worksheet_Change(ByVal Target As Range) Dim data As String, i As Long, maxrow As Long Dim Cnt As Integer, adrs As String, x, tbl If Target.Count > 1 Then Exit Sub If Target.Column = 2 Or Target.Column = 4 And Target = "" Then Application.EnableEvents = False Target.Offset(, 1) = "" If Target.Column = 2 Then Target.Offset(, -1) = "" End If Application.EnableEvents = True Exit Sub End If If Target.Column <> 3 And Target.Column <> 5 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Offset(, -1) = "" Then Exit Sub Application.EnableEvents = False If Target.Column = 3 Then maxrow = Cells(Rows.Count, 1).End(xlUp).Row Cnt = WorksheetFunction.CountIf(Cells(1, 1).Resize(maxrow), Target.Offset(, -1) & "-" & Target) If Cnt Then adrs = Cells(WorksheetFunction.Match(Target.Offset(, -1) & "-" & _ Target, Cells(1, 1).Resize(maxrow), 0), 1).Address(0, 0) MsgBox "その番号は" & adrs & " で既に使われとります!", vbExclamation Target = "" Else Target.Offset(, -2) = Target.Offset(, -1) & "-" & Target End If End If If Target.Column = 5 Then With Sheets("Supp") data = Target.Offset(, -1) & "," & Target tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 4).Value ReDim x(1 To 2) For i = 1 To UBound(tbl, 1) If data = tbl(i, 1) & "," & tbl(i, 2) Then x(1) = tbl(i, 3) x(2) = tbl(i, 4) Exit For End If Next i Cells(Target.Row, 6) = x(1) Cells(Target.Row, 9) = x(2) End With End If Application.EnableEvents = True End Sub ---- 弥太郎さん有難うございます。 本当に良い物が出来上がりました。 もう一つお願いでしゅ。シート5の所で間違いがありました。 A列にデーターを入力するとシート2(SKU)よりVLOOKUPでBC列にデーターを自動出力 シート5(Stock)のデーター A B C D 1 SKU Manuf NAME Qty 2 12345 aaaa社 缶 20 3 12346 aaaa社 水 30 4 12347 bbbb社 牛乳 40 5 12348 cccc社 オレ 50 6 12349 dddd社 チョコ 10 〜 2000 12345 aaaa社 缶10 10 2001 12346 aaaa社 水10 15 2002 12347 bbbb社 牛乳10 20 2003 12348 cccc社 オレ10 30 2004 12349 dddd社 チョコ10 10 この場合どのように組めば良いか教えてくだしゃい。 パー子 ---- パー子はん、これちゃいまっしゃろ? 例えば12345だけでそれにヒットするデータを拾うと複数行に渡りまっせ。 っちゅう事は、或るA列のセルで12345と打ち込むとその下のセルに上書きされてしま いますが、そんな事をお望みやおまへんやろ? 12345-1とか重複のないデータを検索してB、C列に列挙というなら話解りますけど なぁ・・・。 (弥太郎) ---- 弥太郎様 前までの表に少し誤りがありました。新しいものをつくりました。ごめんなしゃい。 Stockのところは、例えば、12345とした時に Manuf、NAMEは同じなので問題ありましぇん。 12345となっているQTYはOrder(QTY) - Sales(QTY)の計算をしましゅ。 あくまでも12345の番号になっているもの(Order、Salesのデーター)のQTY をStockのところに計算させると言った感じでしゅ。 弥太郎さんよろしくお願いいたしましゅ。 シート1(Supp)のデーター A B C D 1 Supp Code Manuf Type 2 100 1 aaaa社 Box 3 100 2 aaaa社 pack 4 101 1 bbbb社 pack 5 102 1 cccc社 Box 6 103 1 dddd社 pack 〜 シート2(SKU)のデーター A B C D E F G H I J K 1 S SKU SKU SKUSub Supp Code Manuf RefNo NAME Type Cost Retail 2 12345-1 12345 1 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 3 12346-1 12346 1 100 2 aaaa社 EFGH 水 pack 2.6 5.0 4 12347-1 12347 1 101 1 bbbb社 IJKL 牛乳 pack 1.6 2.5 5 12348-1 12348 1 102 1 cccc社 OPQR オレ Box 2.4 4.8 6 12349-1 12349 1 103 1 dddd社 STUV チョコ pack 2.9 6.0 〜 2000 12345-10 12345 10 100 1 aaaa社 ABCD 缶 Box 1.6 20 2001 12346-10 12346 10 100 2 aaaa社 EFGH 水 pack 2.6 24 2002 12347-10 12347 10 101 1 bbbb社 IJKL 牛乳 pack 1.6 20 2003 12348-10 12348 10 102 1 cccc社 OPQR オレ Box 2.4 50 2004 12349-10 12349 10 103 1 dddd社 STUV チョコ pack 2.9 120 シート3(Order)のデーター A B C D E F G H I J K 1 SKU SKUSub Supp Code Manuf RefNo NAME Type Cost Retail Qty 2 12345 1 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 100 3 12346 2 100 2 aaaa社 EFGH 水 pack 2.6 5.0 200 4 12347 1 100 3 aaaa社 IJKL 牛乳 pack 1.6 2.5 100 5 12348 4 100 4 aaaa社 OPQR オレ Box 2.4 4.8 100 6 12349 5 100 5 aaaa社 STUV チョコ pack 2.9 6.0 100 〜 1000 12345 10 100 1 aaaa社 ABCD 缶 Box 1.6 20 200 1001 12346 10 100 2 aaaa社 EFGH 水 pack 2.6 24 500 1002 12347 10 101 1 bbbb社 IJKL 牛乳 pack 1.6 20 300 1003 12348 10 102 1 cccc社 OPQR オレ Box 2.4 50 400 1004 12349 10 103 1 dddd社 STUV チョコ pack 2.9 120 500 〜 シート4(Sales)のデーター A B C D E F G H I J K L 1 SKU SKUSub Qty Supp Code Manuf RefNo NAME Type Cost Retail Pro 2 12345 1 10 100 1 aaaa社 ABCD 缶 Box 1.6 2.5 3 12346 2 20 100 2 aaaa社 EFGH 水 pack 2.6 5.0 4 12347 3 10 100 3 aaaa社 IJKL 牛乳 pack 1.6 2.5 5 12348 4 10 100 4 aaaa社 OPQR オレ Box 2.4 4.8 6 12349 5 10 100 5 aaaa社 STUV チョコ pack 2.9 6.0 〜 20000 12345 10 20 100 1 aaaa社 ABCD 缶 Box 1.6 20 20001 12346 10 50 100 2 aaaa社 EFGH 水 pack 2.6 24 20002 12347 10 30 101 1 bbbb社 IJKL 牛乳 pack 1.6 20 20003 12348 10 40 102 1 cccc社 OPQR オレ Box 2.4 50 20004 12349 10 50 103 1 dddd社 STUV チョコ pack 2.9 120 〜 シート5(Stock)のデーター A B C D 1 SKU Manuf NAME Qty 2 12345 aaaa社 缶 20 3 12346 aaaa社 水 30 4 12347 bbbb社 牛乳 40 5 12348 cccc社 オレ 50 6 12349 dddd社 チョコ 10 〜 2000 20001 aaaa社 缶 10 2001 20002 aaaa社 水 15 2002 20003 bbbb社 牛乳 20 2003 20004 cccc社 オレ 30 2004 20006 dddd社 チョコ 10 ---- 弥太郎しゃん 忙しいんでしゅか? ---- 一つだけ宜しいでしょうか? ここは、学校であって、''作成依頼''をするところではありません。 ココで回答を行っている人達は、''善意''で回答くださっています。 回答者の方々はこれ(回答すること)を生業にしているわけではありませんので、上記のようなコメントはお控えください。 と思いますがどうでしょうか・・・ (キリキ)(〃⌒o⌒)b ---- せんせぇ、まぁまぁまぁまぁ・・・ >弥太郎しゃん 忙しいんでしゅか? はい、忙しい巡り合わせにハチ当たってお気の毒でんなぁ。(笑 パー子しゃんのばやい、一日一度の返答なんで、そんなに急いどる様子もないし、いつ でも良かろうとのんきに構えとりますワ。 そんな気ぃの緩みが、確か昨夜付けたつもりのレスが無い・・・(笑 に結びついてお りますねんで、えぇ。 で、そのStockとやらのシートに差し替えてみて下さい。 上手い事イクかイカンかは神のみぞ知る。 ファイナルアンサー!(弥太郎) Private Sub Worksheet_Change(ByVal Target As Range) Dim x(2), tbl, m_row If Target.Count > 1 Then Exit Sub If Target.Column <> 1 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target = "" Then Target.Resize(, 4) = "" Exit Sub Else With Sheets("SKU") tbl = .Cells(2, 2).Resize(.Cells(Rows.Count, 1).End(xlUp).Row) m_row = Application.Match(Target, tbl, 0) tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 11) If Not IsError(m_row) Then x(0) = tbl(m_row, 6) x(1) = tbl(m_row, 8) Else: Exit Sub End If End With End If Application.EnableEvents = False Target.Offset(, 1).Resize(, 2) = x Application.EnableEvents = True End Sub ---- 弥太郎しゃん 有難うございましゅ。また質問でしゅ。 このプログラムを標準モジュールでするときはどうするんでしゅか? 元々A列に番号があって、それを参照して(更新ボタンを作って)データ-を更新していくよう にしてみだいでしゅ。できましゅか?今のプログラムはあくまでも 打ち込んだら結果が出るような感じでしゅ。 弥太郎しゃんだったら、きっとできると思って、また相談しちゃいました。 こんな甘えん坊ですいましぇん。宜しくお願いしましゅ。パー子 ---- パー子はんスレの途中できりきせんせぇがコメントはさんでまっしゃろ? あんたはんに対するご意見ですワ。 そのままにしとってよろしいんでっか? あんたはんがスレを立ててもなんの応答もなかったらイヤな気分になりまっしゃろ? それに全国のパー子ファンがここを覗いてまっせぇ(笑 ま、それは別にして更新ボタンで作業をするんはStockのシートでよろしいんでんな? ただしStockのチェンジイベントは削除しとってくらはい。 (弥太郎) Sub Stock転送() Dim dic As Object, i As Long, j As Long, tbl Set dic = CreateObject("scripting.dictionary") With Sheets("SKU") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 11) For i = 1 To UBound(tbl, 1) dic(tbl(i, 2)) = Array(tbl(i, 6), tbl(i, 8)) Next i End With With Sheets("Stock") tbl = .Cells(2, 1).Resize(.Cells(Rows.Count, 1).End(xlUp).Row, 3) ReDim x(1 To dic.Count, 1 To 2) For i = 1 To UBound(tbl, 1) If dic.exists(tbl(i, 1)) Then tbl(i, 2) = dic(tbl(i, 1))(0) tbl(i, 3) = dic(tbl(i, 1))(1) End If Next i End With Sheets("stock").Cells(2, 1).Resize(UBound(tbl, 1), 3) = tbl End Sub ---- 弥太郎さん 返事遅くなりまして、ごめんなしゃい。風邪を引いてて、パソコンを見る時間が ありませんでちた。プログラムを起動しました。うまくいきましたぁ〜 ありがとうございましゅ。 キリキさん ごめんなしゃい。キリキさんのアドバイスを元に今後はコメントを考えましゅ。 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/200701/20070126230757.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

訪問者:カウンタValid HTML 4.01 Transitional