2010-06-14 7 views
1

J'ai une feuille principale qui contient des lignes de données d'adresse de maison, dont une colonne est une colonne «État». J'ai 50 autres feuilles dans le même document, correspondant à chacun des 50 états américains. Ce que je veux arriver: Quand j'entre une adresse dans la feuille de maître, et entrez un état (disons "CA" ou "Californie"), je veux qu'il remplisse automatiquement la feuille "CA" avec cette adresse. Merci!Remplir de nouvelles feuilles avec des données provenant d'autres feuilles

Répondre

1

Plusieurs hypothèses ici:

1) Le champ Etat est le dernier à remplir, de sorte qu'une fois que vous entrez dans l'état, vous pouvez immédiatement copier l'adresse de la feuille de calcul correcte.

2) Vous entrez vos états avec l'abréviation et vous avez des feuilles de travail avec des noms qui correspondent exactement aux abréviations d'état.

3) Les données des feuilles de travail d'état sont contiguës et commencent dans A1.

Private Sub Worksheet_Change(ByVal Target As Range) 

    Const lngSTATECOLUMN As Long = 6 

    Dim wks As Worksheet 
    Dim lngNextAvailableRow As Long 

    ' check that only a single cell is being changed ' 
    If Target.Areas.Count = 1 And Target.Cells.Count = 1 Then 

     ' check that the cell being edited is in the state column ' 
     If Not Intersect(Target, Columns(lngSTATECOLUMN)) Is Nothing Then 

      ' check that a two-character entry has been made in the state column ' 
      If Len(Target.Value) = 2 Then 

       ' turn off error checking in case it cannot find a matching worksheet ' 
       On Error Resume Next 
       Set wks = ThisWorkbook.Worksheets(Target.Value) 
       On Error GoTo 0 

       ' continue if it found a worksheet with the same name as the state you input ' 
       If Not wks Is Nothing Then 

        lngNextAvailableRow = wks.Range("a1").CurrentRegion.Rows.Count + 1 
        ActiveSheet.Range(Cells(Target.Row, 1), Cells(Target.Row, 6)).Copy _ 
         wks.Range("A" & lngNextAvailableRow) 

       End If 
      End If 
     End If 
    End If 

End Sub 

Je voudrais cependant vous demander pourquoi vous devez dupliquer vos données dans 50 feuilles de travail différentes? Cela semble extrêmement inefficace et sujettes aux erreurs. À moins que vous ne deviez le faire pour une raison très précise, je le conseillerais très fortement .

Si vous avez besoin d'afficher ou d'utiliser des adresses d'état séparées à un moment donné, alors je chercherais plutôt à filtrer la liste principale des adresses.

Questions connexes