0
votes

Vérifiez deux colonnes pour les allumettes puis modifiez une cellule

J'ai des problèmes avec un code VBA que j'écris et je cherche de l'aide. Je suis nouveau ici, si vous avez besoin de plus d'informations, merci de me le faire savoir. En outre, si la description n'est pas assez claire.

Qu'est-ce que j'essaie de faire: J'ai deux feuilles de calcul, je veux rechercher des matchs dans deux colonnes. Une colonne dans une feuille l'autre colonne d'une autre feuille. S'il y a un match, je veux éditer une valeur dans la première feuille de calcul.

mon code xxx

Le problème: Mon code ne trouve aucun match, même s'ils sont définitivement là. J'ai l'impression que le problème est dans le "Set Fnd1" ....

S'il vous plaît laissez-moi savoir si plus d'informations est nécessaire! Merci d'avance ....


6 commentaires

Bonjour, bienvenue pour. S'il vous plaît vérifier le code .. Apparaître deux fois avec Dim Déclarez. De plus, vous devez faire boucler chaque cellule dans la colonne de la première feuille où vous souhaitez modifier les valeurs. Dans une boucle, trouvez chaque valeur de cellule dans la colonne Second Feuille et si la valeur d'édition correspondait avant de terminer la boucle.


Vous essayez de trouver la colonne entière D dans la colonne C Feuilles de calcul ("blad1"). Plage ("D"). Valeur - Vous devez rechercher une valeur à la fois < Code> Feuilles de calcul ("blad1"). Plage ("D1"). Valeur


Il semble que vous modifiez les valeurs de la même rangée de la cellule trouvée sur l'autre feuille. Et si les rangées sont différentes?


Hé, merci pour les réponses rapides. Je pense que la réponse de Naresh a du sens, je devrais faire une boucle. J'espérais que cela le ferait automatiquement. Je vais l'essayer avec une boucle et vous laisser savoir si cela fonctionnait! :)


@Nareshbhople Je dois éditer des valeurs dans la feuille1 dans la rangée x où x est la même ligne de la feuille2? Ou modifier des valeurs dans la feuille1 sur la même ligne? Le dernier serait correct et serait toujours le cas.


Je voulais dire si une cellule sur la première feuille (Say C10) correspond à une cellule dans la deuxième feuille mais sur une ligne différente (disons D15). Ensuite, votre code changera dans la première feuille mais non sur la ligne C10 mais sur la rangée D15.


3 Réponses :


0
votes

essayer quelque chose comme ça? Ou peut ne pas avoir besoin de changer les draps / gammes .. Vérifiez. Les modifications macro ne peuvent pas être annulées. Essayez d'abord les macros sur duplicata / exemplant les données ou fermez le classeur sans enregistrer les modifications. xxx


2 commentaires

De plus, il y aura un problème s'il ya des valeurs dupliquées dans la colonne D de "blad1" .as la macro ne trouvera que le premier match comme dans le cas de VLOOKUP.


Merci, ça marche presque. Il ne peut y avoir de valeurs dupliquées dans la colonne D donc ce n'est pas un problème. Fait un léger ajustement pour comparer l'inverse (il y a moins de données dans «blad1»). Mais la partie où la valeur est modifiée ne fonctionne pas. Voir le code ci-dessous:



0
votes
Private Sub CommandButton2_Click()
Worksheets("Blad1").Columns("L").Hidden = False
Range("L3").Value = "=Sumproduct(F2:F65536, H2:H65536)"
Dim dl As Range, fnd1 As Range, c1 As Range
Dim Lrow As Long
Lrow = Worksheets("Voorraadlijst").Range("C" & Rows.Count).End(xlUp).Row
Dim Trow As Long
Trow = Worksheets("Blad1").Range("D" & Rows.Count).End(xlUp).Row

For Each dl In Worksheets("Blad1").Range("D2:D" & Trow)

On Error Resume Next ' to handle error is the cl value not found.

Set fnd1 = Worksheets("Voorraadlijst").Range("C1:C" & Lrow).Find(dl.Value, LookIn:=xlValues, lookat:=xlWhole)
'If found the cl value in D column of "Blad1" sheet name the cell "fnd1"

If Not fnd1 Is Nothing Then
Worksheets("Voorraadlijst").Range("G" & fnd1.Row) = Worksheets("Voorraadlijst").Range("G" & fnd1.Row) _
                                                - Worksheets("Blad1").Range("H" & d1.Row)
'If cl value found then change G Column cell in "Voorraadlijst" sheet on the cl row.

Else
MsgBox ("Error, no match")
End If
NextEnd Sub

0 commentaires

0
votes

Pour moi, la méthode de recherche semblait être buggy. Donc, je fais toujours une boucle. Plus plus facile d'avoir des déclarations conditionnelles.

Sub findValue()

Dim arr As Variant

arr = shVoorraadlisjt.Range("D:D")

Dim valueToFind  As String
valueToFind = "Find Me"

Dim j As Integer
For j = 1 To UBound(arr)
    If arr(j) = valueToFind Then
        MsgBox ("Found the value")
    End If

Next j



End Sub


0 commentaires