2016-10-05 21 views
0

私は2つの異なるブックを持っています。そのうちの1つから、複数の基準に基づいて特定の値をコピーしたいと思います。複数の条件に基づいて1つのシートから別のブックにコピーVBA Excel

この例では、各ワークブックwb1とwb2を呼び出します。最後にポストの最後に共有wbリンクがあり、見た目がより明確になります。

したがって、wb1ではwb2に独自のシートを持つリストもあります。 私はwb1を開くときに、同じ名前のwb2の各シートに "NPS"というセルの値をコピーしたいと思っています.wb2では、私は別の月といくつかの他の変数を持っています。だから私がしたいのは、NPSの値をNPSの下のデータにコピーし、それをwb1でも言及されている同じ月に一致させることです。

私は今までこのコードを持っていますが、本当にそれを作ることはありません。私はこの部分で "subsribtion out of range"を取得するので、sh2 = wb2.Sheets(c.Value)を設定します。どのように推測しているのでしょうか?それは、その名の通りの値でさえ、シートを値で識別することができないということです。

Sub NPS() 
Dim sh1 As Worksheet, sh2 As Worksheet, c As Range, wb2 As Workbook, fn As Range 
Set sh1 = ThisWorkbook.ActiveSheet 
Set wb2 = Workbooks.Open("F:\Excel\Chef\NPS Samtal 777 agentnivå.xlsx") 
    For Each c In sh1.Range("C8", sh1.Cells(Rows.Count, 3).End(xlUp)) 
     Set sh2 = wb2.Sheets(c.Value) 
     Set fn = sh2.Rows(24).Find(sh1.Range("B5").Value, , xlValues, xlWhole) 
     If Not fn Is Nothing Then 
       fn.Offset(1) = sh1.Range("E5").Value 
     End If 
    Next 
End Sub 

WB1:https://docs.google.com/spreadsheets/d/14CyC2CQWWH-Bxifw2EBni0Uj2YjlN-kIUVki2rle3LA/edit#gid=1398323909

WB2:誰もが何か提案がありましたらhttps://docs.google.com/spreadsheets/d/1vcfnluE_PSm5dEEeHuBPA9XRoP-VPQRk3YDE7ONS-NE/edit?usp=sharing

私は非常に喜んでいただけることでしょう。

//は、Excelが間違ったファイルのワークシートを探しているように思えダニエル

答えて

0

について。値を挿入する前に、適切なブックをアクティブ化する必要があります。サイドノートでは

Sub NPS() 
Dim sh1 As Worksheet, sh2 As Worksheet, c As Range, wb2 As Workbook, fn As Range 
Set sh1 = ThisWorkbook.ActiveSheet 
Set wb2 = Workbooks.Open("F:\Excel\Chef\NPS Samtal 777 agentnivå.xlsx") 
    For Each c In sh1.Range("C8", sh1.Cells(Rows.Count, 3).End(xlUp)) 
     wb2.Activate  
     Set sh2 = wb2.Sheets(c.Value) 
     Set fn = sh2.Rows(24).Find(sh1.Range("B5").Value, , xlValues, xlWhole) 
     If Not fn Is Nothing Then 
       fn.Offset(1) = sh1.Range("E5").Value 
     End If 
    Next 
End Sub 

:このようなあなたのppsTestファイルのワークシートが整列されていない(NPSの-talは、実施例1と異なる行です)。

+0

まだ同じエラーが表示されることがあります。エラーが発生する可能性があります。例1の間違った行の通知に感謝します。 デバッグモードで、コードを実行すると、何か理由でc.value = emptyにマウスを置くことができます。 –

関連する問題