Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1148 / 13645 ツリー ←次へ | 前へ→

【76044】VBA 検索に該当すれば指定列に値を入れるメソッド みみ 14/9/3(水) 3:08 質問[未読]
【76045】Re:VBA 検索に該当すれば指定列に値を入れ... 独覚 14/9/3(水) 9:11 発言[未読]
【76047】Re:VBA 検索に該当すれば指定列に値を入れ... みみ 14/9/3(水) 15:52 発言[未読]
【76048】Re:VBA 検索に該当すれば指定列に値を入れ... 独覚 14/9/3(水) 16:21 回答[未読]
【76049】Re:VBA 検索に該当すれば指定列に値を入れ... 独覚 14/9/3(水) 16:36 発言[未読]
【76050】Re:VBA 検索に該当すれば指定列に値を入れ... みみ 14/9/3(水) 18:18 お礼[未読]

【76044】VBA 検索に該当すれば指定列に値を入れ...
質問  みみ  - 14/9/3(水) 3:08 -

引用なし
パスワード
   こんばんは。
色々調べてみましたが、初心者故解決方法が分かりません。
業務に支障をきたしているので、下記の方法ができれば非常に
助かります。お力添えをお願いします。


1.シート名”在庫”J列(J4以降日々増えます)に商品番号が入っています。

2.別シートD列(D2以降)に入力した商品番号(複数)と在庫シートの商品番号
 が合致すれば在庫シートの商品番号と同行のP列に「済」を入力したいです。

3.「済」入力実行ボタンを別シート上に作りたい。

よろしくお願いします。


Sub Test()
 Dim R As Long
 For R = 1 To Cells(Rows.Count, "在庫!J:J").End(xlUp).Row
   If Cells(R, "在庫!J:J").Value = "D:D" Then
     Cells(R, "在庫!P:P").Value = 済
   End If
 Next R
End Sub

【76045】Re:VBA 検索に該当すれば指定列に値を入...
発言  独覚  - 14/9/3(水) 9:11 -

引用なし
パスワード
   ▼みみ さん:
あらかじめ在庫シートのP列に式を入れておいて別シートに入力された時点で「済」マークを
表示させることもできるけれどもマクロと式のどちらがいいですか?

あと、マクロの場合も別シートで入力された時点で反映させることもできますよ。

【76047】Re:VBA 検索に該当すれば指定列に値を入...
発言  みみ  - 14/9/3(水) 15:52 -

引用なし
パスワード
   ▼独覚 さん:
お返事ありがとうございます。

「済」の入力が必要ないときもありますので、
マクロボタンで実行できればベストなんですが。。。

何卒、ご教示の程、よろしくお願いいたします。

【76048】Re:VBA 検索に該当すれば指定列に値を入...
回答  独覚  - 14/9/3(水) 16:21 -

引用なし
パスワード
   ▼みみ さん:
データを入力するシートが「入力」だとします。
標準モジュールに以下を記載してマクロボタンに登録してみてください。

Sub TST()
  Dim 在庫_Sheet   As Worksheet
  Dim 入力_Sheet   As Worksheet
  Dim CHK_ROW_CNT   As Long
  Dim LOOP_CNT    As Long
  Dim OUT_ROW_CNT   As Long

  Set 在庫_Sheet = Worksheets("在庫")
  Set 入力_Sheet = Worksheets("入力")

  CHK_ROW_CNT = 入力_Sheet.Cells(Rows.Count, "D").End(xlUp).Row
  OUT_ROW_CNT = 0
  For LOOP_CNT = 2 To CHK_ROW_CNT
    If 入力_Sheet.Cells(LOOP_CNT, "D") <> "" Then
      On Error Resume Next
      OUT_ROW_CNT = WorksheetFunction.Match(入力_Sheet.Cells(LOOP_CNT, "D"), 在庫_Sheet.Range("J:J"), 0)
      On Error GoTo 0
      If OUT_ROW_CNT > 0 Then
        在庫_Sheet.Cells(OUT_ROW_CNT, "P").Value = "済"
      End If
    End If
  Next
End Sub

【76049】Re:VBA 検索に該当すれば指定列に値を入...
発言  独覚  - 14/9/3(水) 16:36 -

引用なし
パスワード
   ごめんなさい、一か所修正です。
(結果に違いはないといえばないのですが…)

Sub TST()
  Dim 在庫_Sheet   As Worksheet
  Dim 入力_Sheet   As Worksheet
  Dim CHK_ROW_CNT   As Long
  Dim LOOP_CNT    As Long
  Dim OUT_ROW_CNT   As Long

  Set 在庫_Sheet = Worksheets("在庫")
  Set 入力_Sheet = Worksheets("入力")

  CHK_ROW_CNT = 入力_Sheet.Cells(Rows.Count, "D").End(xlUp).Row
  For LOOP_CNT = 2 To CHK_ROW_CNT
    If 入力_Sheet.Cells(LOOP_CNT, "D") <> "" Then
      OUT_ROW_CNT = 0
      On Error Resume Next
      OUT_ROW_CNT = WorksheetFunction.Match(入力_Sheet.Cells(LOOP_CNT, "D"), 在庫_Sheet.Range("J:J"), 0)
      On Error GoTo 0
      If OUT_ROW_CNT > 0 Then
        在庫_Sheet.Cells(OUT_ROW_CNT, "P").Value = "済"
      End If
    End If
  Next
End Sub

OUT_ROW_CNT = 0
の位置を変更してください。

【76050】Re:VBA 検索に該当すれば指定列に値を入...
お礼  みみ  - 14/9/3(水) 18:18 -

引用なし
パスワード
   ▼独覚 さん:
できました!!!感動です;;
ありがとうございます。

こんな複雑なの、まだまだ自分では出来る気がしませんが、
便利さを実感しました。

少しずつ勉強したいと思います。

1148 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free