2016-11-01 1 views
0

enter image description hereColler dans une gamme spécifique

Regardez le code ci-dessous:

With Worksheets("L.NAM.M") 
     With .Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _ 
      xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
      xlNext, MatchCase:=False, SearchFormat:=False) 
      .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy _ 
      Destination:=Worksheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1) 
     End With 
    End With 

With Worksheets("L.EMEA.O") 
    With .Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _ 
     xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
     xlNext, MatchCase:=False, SearchFormat:=False) 
     .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy Destination:=Worksheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1) 
    End With 
End With 


     'Record Source 

     With Worksheets("L.EMEO.O") 
     With .Cells.Find(What:="Record Source", After:=ActiveCell, LookIn:= _ 
      xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
      xlNext, MatchCase:=False, SearchFormat:=False) 
      .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy Destination:=Worksheets("NewForecast").Range("N" & Rows.Count).End(xlUp).Offset(1) 
     End With 
    End With 

Ce que je fais here..I reçois forecast_quarter de données de ces deux feuilles de calcul et coller ci-dessous l'en-tête d'une nouvelle feuille de calcul . Donc, c'est trouver la lastrow avec des données et coller ci-dessous. La partie piège vient quand chercher la source d'enregistrement de "L.EMEA.O", comme le "L.NAM.M" n'a pas de données pour la colonne L, il fout en l'air quand je colle les données L.EMEA.O, car il ne s'aligne pas avec le L.EMEA.O mais avec L.NAM.O. Qu'est-ce que je voudrais est de coller aligné la ligne d'où il a collé le forecast_quarter pour L.EMEA.O.

Des idées? J'ATTACHE une photo

enter image description here

Dans ce cas, coller le texte dans le K114, si je lance l'autre morceau, je veux coller dans le même pas dans le N110, mais N114.

+0

Je n'ai pas une image complète de ce que vous êtes essayer de faire ou quel est le problème du tout. Plus d'images seraient utiles. Cela ressemble à un problème très facile à résoudre. – user1274820

+0

Salut! Merci de répondre! Désolé si je ne suis pas si clair..Mais j'attache une nouvelle image. Dans l'image, vous pouvez voir que Forecast_Quarter d'une feuille va jusqu'à A10 (Whatever), et Record Source jusqu'à A8. La deuxième feuille le forecast_quarter commence à A11 (la première cellule vide) et va à A23. Comme ma formule est comme, trouvez la première cellule vide et collez, ma source d'enregistrement commencera à B9, parce que c'est où est le premier vide, ce que je veux est de commencer à la même rangée du quart de ma deuxième prévision de feuille (Wherever), dans ce cas B11. –

Répondre

0

stocker l'index de ligne utilisé pour « L.EMEA.O » et l'utiliser pour « L.EMEO.O » ainsi:

With Worksheets("L.NAM.M") 
      With .Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _ 
       xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
       xlNext, MatchCase:=False, SearchFormat:=False) 
       .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy _ 
       Destination:=Worksheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1) 
      End With 
     End With 

    Dim L_EMEA_ORow As Long '<--| variable to hold "forecast_quarter" sheet column "K" row index where to start pasting "L.EMEA.O" sheet data from 
    With Worksheets("L.EMEA.O") 
     With .Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _ 
      xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
      xlNext, MatchCase:=False, SearchFormat:=False) 
      L_EMEA_ORow = Worksheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1).Row '<--| store relevant row index where to start pasting data from 
      .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy Destination:=Worksheets("NewForecast").Range("K" & L_EMEA_ORow) '<--| use relevant row index 
     End With 
    End With 


    'Record Source 

    With Worksheets("L.EMEO.O") 
     With .Cells.Find(What:="Record Source", After:=ActiveCell, LookIn:= _ 
      xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ 
      xlNext, MatchCase:=False, SearchFormat:=False) 
      .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy Destination:=Worksheets("NewForecast").Range("N" & L_EMEA_ORow) '<--| use same relevant row index calculated above 
     End With 
    End With 
+0

vous êtes le meilleur, vraiment. Merci encore! tellement bon de voir comment les gens aident ici! –

+0

Vous êtes les bienvenus. Bien que, malheureusement, je ne suis pas le meilleur. Mais heureux d'être utile. – user3598756