2016-10-27 6 views
0

私はVBAコーディングで新しく、この懸念に私を助けてくれますか?Excel VBAコーディング

現在、列AJの特定のテキスト(「Chase」など)を検索するマクロを作成しています。見つかった場合は、列Aのエンティティを検索して別のシートに貼り付けます。

enter image description here

enter image description here

事前に感謝します!

+0

これまであなたが持っているコードを投稿してください。 – jsheeran

+0

おそらく 'VLOOKUP'機能があなたが探しているものです! – RCaetano

+0

サブEachLoopExample()ワークシート、ws1.Rangeの各MyCell(「AEについてWS1 =シート( "シート1") 設定WS2 =シート( "シート3") ワーク セットとしてWS2として 薄暗いWS1:AE ") MyCell.Value =" check "の場合 sResult = Application.WorksheetFunction.VLookup(" check "、ws1.Cells(" AE7:A2693 ")、31)。 ws2.Range(" A2 ")を選択します。 Selection.Value 終了の場合 次MyCell End Sub – Irvin

答えて

0

これを試してください。コメントから取りました。取得する可能性のあるエラーは、VLookup式のためです。 VLookup式がどのように機能しているかを調べる必要があります。
=VLOOKUP(Value you want to look up, range where you want to lookup the value, the column number in the range containing the return value, Exact Match or Approximate Match – indicated as 0/FALSE or 1/TRUE).

この数式は「チェック」を検索しています。取得したエラーが検索対象の範囲にある場合、AEからAへの列である「AE7:A2693」を検索しています。後方検索はできませんので、A2693:AE7である必要があります。正しい範囲を見つけて、下のコードで変更する必要があります。
カラム31に戻り値が含まれていますか?

Sub EachLoopExample() 

Dim ws1 As Worksheet, ws2 As Worksheet 
Dim MyCell As Range 
Dim sResult As String 

Set ws1 = Sheets("Sheet1") 
Set ws2 = Sheets("Sheet3") 
For Each MyCell In ws1.Range("AE:AE") 
    If MyCell.Value = "check" Then 

     sResult = Application.WorksheetFunction.VLookup("check", ws1.Range("B1:C3"), 1, False) 
     ws2.Range("A2").Value = sResult 
    End If 
Next MyCell 
End Sub 
+0

こんにちはNiclas、私は上記のコーディング作業をすることができます、あなたの指示を非常に感謝し、助言する。しかし、上記のコーディングでは、1つのセル値しかルックアップできません。たとえば、カラムAKに「チェイス」の値を持つセルが3つある場合、指定されたシートに最初の行のみがコピーされます。上記のコーディングで何が変わる可能性があるのか​​を親切にアドバイスしてもらえますか? – Irvin

+0

使用している正確なVLookup式をデータ範囲とともに投稿してください。私はあなたが何をしようとしているのかまだよく分かりません。このVLookup数式をSheet3に挿入したい(マッチを見るにはクリーンシート)が、Sheet1には何がありますか? AEはチェック、AKは追いかけですか? – Niclas

+0

質問を再読してください。あなたが望むのは、例えば上を向けることです。列AJの "Chase"を探し、見つかった場合は、Sheet3列Aの列Aの値(OC_81など)を返します。 – Niclas

0
Sub EachLoop() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws1.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 7 To FinalRow 
    If Cells(i, 31) = "check" Then 
     Range(Cells(i, 1), Cells(i, 7)).Copy 
     ws2.Select 
     Range("A200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Select 
    End If 

Next i 

ws2.Select 

Range("B2").Select 

Call EachLoop2 

End Sub 

Sub EachLoop2() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws1.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 7 To FinalRow 
    If Cells(i, 32) = "check" Then 
     Range(Cells(i, 1), Cells(i, 13)).Copy 
     ws2.Select 
     Range("H200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 
     ws1.Select 
    End If 

Next i 

ws2.Select 

Range("B2").Select 

Call EachLoop2_ext 


End Sub 

Sub EachLoop2_ext() 

Dim ws1 As Worksheet 
Dim ws2 As Worksheet 
Dim FinalRow As Integer 
Dim i As Integer 

Set ws1 = Sheet1 
Set ws2 = Sheet3 

ws2.Select 
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

For i = 3 To FinalRow 
    If Range(Cells(i, 9), Cells(i, 13)) = "" Then 
     ws2.Select 
     Range(Cells(i, 9), Cells(i, 13)).ClearContents 
     Range(Cells(i, 14), Cells(i, 20)).Cut 
     Range("I200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 

    Else 
     ws2.Select 
     Range(Cells(i, 9), Cells(i, 13)).ClearContents 
     Range(Cells(i, 14), Cells(i, 20)).Cut 
     Range("I200").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValuesAndNumberFormats 

    End If 

Next i 

ws2.Select 

Range("I2").Select 

End Sub 
+0

こんにちはNiclas、私はすでに私の希望の結果を得る別のコードを作ることができました。しかし、私はまだEachLoop2_ext()の最後のコーディングで何らかのエラーが発生しています。エラー1004.あなたは親切にチェックしてこれを見てみることができますか? – Irvin

+0

範囲選択で列をスキップする方法がわからないため、EachLoopとは異なるマクロコーディングを作成しました。私が本当に望むのは、Range(Cell(I、1))からコピーしてからCell(i、 8)からCell(i、13)へ – Irvin

+0

これは簡単にコーディングしているのですか? – Irvin