2010-11-01 18 views
1

J'ai une liste de 50 000 fichiers (chemins de fichier complets). Je veux réorganiser ces dans des dossiers, 1000 fichiers par dossier en utilisant un fichier batch.Excel - Diviser les lignes en lots de 1000

Les dossiers doivent juste être nommés 000, 001, 002, 003 etc. Tout ce dont j'ai besoin, c'est qu'Excel écrive «000» pour les 1000 premiers fichiers, 001 pour les mille suivants, 002 pour les mille suivants jusqu'à ce qu'il y ait plus de fichiers.

J'ai expérimenté Do While mais je n'arrive pas à obtenir ce que je veux. Je peux obtenir ce que je veux avec:

Do While i < 1001 
Range("A" & i) = "'000" 

Mais se ventile comme je dois faire une nouvelle Do While pour chaque chiffre supplémentaire dans un certain nombre, et il ne s'arrête pas quand la liste des pistes de fichiers en dehors.

Un grand merci pour toute aide.

Répondre

1

Essayez cette

Sub a() 
    Dim i, j As Long       'Integers go only up to 32K 
    Dim s As String 
    For i = 1 To 50000 
    Range("A" & i).NumberFormat = "@"  'Show as text , to show leading zeroes 
    j = Int((i - 1)/1000)    'Calculate the batch number for this Cell 
    s = CStr(j)       '...and To String 
    Range("A" & i) = Mid("000", 1, 3 - Len(s)) + s 'Fill with leading zeroes 
    Next i 
End Sub 
+0

Merci! Ça marche. Je n'étais probablement pas assez explicite dans mon OP, mais la liste est de longueur variable, ce n'est pas toujours 50 000. Comment le ferais-je, de sorte qu'au lieu de i = 1 à 50000, i = jusqu'à Cells (i, 2) <> "" (ie jusqu'à ce que la colonne B soit vide?) –

+0

Nevermind - ajouté dans sous Pour i = 1 To 50000 Si Cells (i, 2) <> "" Alors ... –

+0

vous pouvez toujours compter le nombre de cellules dans votre colonne à l'avance en utilisant le worksheetfunction.countA (colonnes ("A: A")) sorte de chose –