Mise à jour:
Le jeu de données est composé de chaînes Nombre si (je ne l'obtiens pas) -> Je peux faire toutes les choses mathématiques avec eux comme avec des chiffres réguliers. P>
problème Est-ce que j'ai besoin de séparer les cellules qui ressemblent à cette "186,85" et des cellules qui ressemblent à ce "1,76 dividende". p>
=========================== = P>
J'ai besoin d'une boucle pour vérifier la ligne à la ligne si la cellule contient du texte (mot "dividende" spécifiquement) ou s'il n'est qu'un numéro. S'il s'agit d'un texte, puis supprimez-le et passez à la ligne suivante. P>
Il fait une certaine suppression, mais il essuie 50 rangées de données presque à chaque fois (je n'ai que deux lignes de texte peuplées de texte dans ces données particulières. ensemble). Ces lignes sont des chiffres. P>
Dim i As Long i = 2 Do If WorksheetFunction.IsText(Sheets("Data").Cells(i, 5)) = True Then If Not Worksheets("Data").Cells(i, 5).Value = "" Then Worksheets("Data").Rows(i).Delete End If End If i = i + 1 Loop Until i = 100
4 Réponses :
Essayez quelque chose comme ceci:
Sub test() Dim i As Long For i = 100 To 2 Step -1 With ThisWorkbook.Worksheets("Data") If WorksheetFunction.IsText(.Cells(i, 5)) = True Then If Not .Cells(i, 5).Value = "" Then .Rows(i).EntireRow.Delete End If End If End With Next i End Sub
Merci pour votre réponse. Malheureusement, cela supprime toujours la moitié des données de données à chaque fois que je l'exécute: /
Le ci-dessous a été mis à jour sur une plage dynamique. Cela n'aura pas besoin de modification quel que soit le nombre de lignes de votre feuille.
Plus important encore, la suppression des lignes à l'intérieur d'une boucle entraînera votre gamme à chaque suppression. Le chemin autour de cela est de boucler vers l'arrière p>
Ne supprimez pas les cellules à l'intérieur de votre boucle. Chaque fois que vos critères sont remplis, vous forcez une action (suppression). Au lieu de cela, rassemblez toutes les cellules à supprimer à l'intérieur de votre boucle, puis supprimez l'ensemble de la collection ( Union code>) à la fois en dehors de la boucle. Cela nécessite 1 action dans une action totale 1 action par instance de texte p>
Vous pouvez utiliser est Ce que vous essayez? p> spécialcells code> avec
xlcelltypeconstants-2 code> ... pas besoin d'une boucle. Voir Méthode de gamme.SpecialCells (Excel) et XLSpecialCellsValue (Excel)
Merci à tous pour des réponses rapides et des efforts.
J'ai réussi à faire fonctionner cette solution avec Instr () Fonction: p>
''loop through the Data and remove all rows containing text (Dividend payments which we don't need) Dim i As Long Dim ws As Worksheet Dim searchText As String Dim searchString As String i = 2 Set ws = Sheets("Data") Do Until ws.Cells(i, 2).Value = "" searchText = "Dividend" searchString = ws.Cells(i, 2).Value If InStr(searchString, searchText) Then ws.Rows(i).Delete End If i = i + 1 Loop
Pour indiquer que la question a été résolue, acceptez une réponse. Stackoverflow.com/help/accepted-answer . Envisagez de supprimer résolu du titre de la question.
Veuillez revenir à cela et cliquez sur la case à gauche de la contribution qui a répondu à la question. Cela aidera les visiteurs futurs sur le site à la recherche d'aide pour des problèmes similaires. En outre, vous pouvez uplifier toutes les contributions utiles.