Excel VBA質問箱 IV

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

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


10790 / 13646 ツリー ←次へ | 前へ→

【19883】教えてください! れいこ 04/11/18(木) 14:38 質問[未読]
【19888】Re:教えてください! Asaki 04/11/18(木) 15:21 回答[未読]
【19890】Re:教えてください! kazu 04/11/18(木) 15:35 回答[未読]
【19923】Re:教えてください! れいこ 04/11/19(金) 11:25 お礼[未読]

【19883】教えてください!
質問  れいこ  - 04/11/18(木) 14:38 -

引用なし
パスワード
   こんにちは。

Sheets1のA列にある品番と、Sheets2のA列にある品番が
一致すれば、Sheets2のC列にある数値をSheets1のC列に
入力したいのですが、以下のような表になっており、
B列に入力されている行数分だけ入力したいのですが、
どうすればよいでしょうか?
------------------------------------
【Sheet1】
   A      B       C  
1 CBC1000 上ハウジング     
2       下ハウジング     
3       セッペン  
4 CCD2000 上ハウジング
5       下ハウジング
6       セッペン

【Sheet2】
   A      B      
1 CBC1000   500     
2 CCD2000   400  
3      
------------------------------------
【Sheet1】
   A      B       C  
1 CBC1000 上ハウジング   500    
2       下ハウジング   500   
3       セッペン    500
4 CCD2000 上ハウジング   400
5       下ハウジング   400
6       セッペン    400

↑このような感じに入力したいのですが、
どうすればよいのかわかりません。
どなたかご指導お願いします。

【19888】Re:教えてください!
回答  Asaki  - 04/11/18(木) 15:21 -

引用なし
パスワード
   こんにちは。

数式ではダメですか?

C1 =IF(A1="","",VLOOKUP(A1,Sheet2!$A$1:$B$2,2,FALSE))
C2 =IF(A2="",C1,VLOOKUP(A2,Sheet2!$A$1:$B$2,2,FALSE))
以下、C2を最終行までコピー

【19890】Re:教えてください!
回答  kazu  - 04/11/18(木) 15:35 -

引用なし
パスワード
   VBAで実行するなら・・・。


Sub Sample()
Dim Int_Row As Long, Int_Key As Long

Dim Rng_Key As Range
'Sheets("SHEET1").Cells(65536, 2).End(xlUp).Row : シート1の B65536 を基点に上方向に値を持つ最後の行の行番号を返します。
'変数 Int_Row は 1〜 B列の最終行迄1づつカウントアップ
For Int_Row = 1 To Sheets("SHEET1").Cells(65536, 2).End(xlUp).Row Step 1
  'A列が空白で無い場合には SHEET2のA列にて同じ値を持つセルを検索し 変数 Rng_Key に 格納
  If Sheets("SHEET1").Cells(Int_Row, 1).Value <> "" Then
    Set Rng_Key = Sheets("SHEET2").Columns(1).Find(Sheets("SHEET1").Cells(Int_Row, 1).Value)
    'SHEET2のA列にて同じ値を持つ行が無かった場合 変数 Int_Key に0を 格納
    If Rng_Key Is Nothing Then
      Int_Key = 0
    Else
    'SHEET2のA列にて同じ値を持つ行が有った場合 変数 Int_Key に B 列の値を 格納
      Int_Key = Rng_Key.Offset(0, 1).Value
    End If
    'Rng_Key Objectの開放
    Set Rng_Key = Nothing
  End If
  'SHEET1の Int_Row 行 B列の値が 空白でない場合
  If Sheets("SHEET1").Cells(Int_Row, 2).Value <> "" Then
    '変数 Int_Key を Int_Row 行 C列に書き出し
    Sheets("SHEET1").Cells(Int_Row, 3).Value = Int_Key
  End If
Next Int_Row
End Sub

【19923】Re:教えてください!
お礼  れいこ  - 04/11/19(金) 11:25 -

引用なし
パスワード
   こんにちは。
お礼が遅れましたが、
Asakiさん、kazu さん回答ありがとうございます!
Asakiさんに教えていただいたVLOOKUPで試して
みたのですが、うまくいかなかったので、kazuさん
の方法でやってみたら、ちゃんと動きました!
本当に助かりました。
ありがとうございました。
またご指導お願いします。

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