0
votes

Excel VBA - SUMIF et Moyenne par champ ID

hi je suis nouveau pour exceller , cherchait un moyen de calculer ce qui suit:

avoir champ d'identification dans colonne A au format texte. Basé sur chaque champ d'identification et où le champ de texte n'est pas vide, je souhaite définir le champ POS à la valeur 1 (au début de chaque nouvel identifiant), puis incrémentez sur 2 à la prochaine position de champ de texte qui n'est pas vide.

L'identifiant doit réinitialiser à 1 lorsque l'ID dans la colonne A change, puis augmente et ainsi de suite.

La finale SC doit également être calculée pour chaque POS comme moyen simple de SC entre 2 positions et imprimé au début de chaque POS.

par exemple. Pour ID 12534, pour POS 1, la finale SC devrait être (0,2 + 0,3) / 2.

 Entrez la description de l'image ici


4 commentaires

Hé, avez-vous essayé de faire un codage jusqu'à présent? Si oui, veuillez le poster ici. Aprèsall, Stackoverflow est de vous aider avec votre code, de ne pas faire le codage pour vous, gratuitement :)


Je suis un peu nouveaubie, j'aurais posté le code si je savais comment :) Si vous ne pouvez pas vous aider, c'est bien. voulait juste demander à un Qn. pas de soucis. Merci!


Les nouveaux identifiants sont-ils toujours séparés par une cellule vide?


Oui, ils sont toujours séparés par une cellule vide.


3 Réponses :


0
votes

Ceci fonctionnera, présumer que votre table commence à la cellule a1 xxx

donne le résultat souhaité:

 Entrez la description de l'image ici

mais je doute fortement que vous comprenez le code sans vous faire coder vous-même.
honnêtement, je suis vraiment envisagé si je devrais même poster la réponse.


3 commentaires

Merci! Ça marche! Je suis Newbie dans Excel VBA avec un cas d'utilisation unique. Désolé, je comprends votre préoccupation pour que je n'ai pas essayé de coder, je lis du contenu sur le contenu de la VBA, mais je soins à savoir où commencer ou comment aborder la déclaration de problème. Encore une fois, merci pour votre aide rapide!


Eh bien, content que vous mettiez au moins au moins l'effort. De toute façon, si cela résolvait votre question, veuillez la marquer comme la réponse (avec le signe de coche) et également la réponse de @chillin si vous avez trouvé cela utile :)


Il a lu votre code et essayez de comprendre. Merci encore.



1
votes

Ceci est possible dans VBA (bien sûr), mais voici une approche de formule si vous voulez l'essayer.

Essayez de mettre cette formule dans la cellule D2 (en supposant POS code> est dans la colonne D) : p> xxx pré>

et cette formule dans la cellule E2 (en supposant final SC code> est dans la colonne E): P>

=IF($D2=1,AVERAGEIFS(C:C,A:A,$A2),"")


0 commentaires

1
votes

Vous pouvez utiliser SPÉCIALCELLS () A > Méthode et Zones Propriété de Plage Code> Objet:

Sub main()
    Dim area As Range
    Dim iArea As Long

    With Range("A2", Cells(Rows.Count, 1).End(xlUp))
        For Each area In .SpecialCells(xlCellTypeConstants).Areas
            With area.Offset(, 1).SpecialCells(xlCellTypeBlanks)
                For iArea = 1 To .Areas.Count
                    .Areas(iArea).Offset(-1, 2).Resize(1).Value = iArea
                    .Areas(iArea).Offset(-1, 3).Resize(1).Value = WorksheetFunction.Average(.Areas(iArea).Offset(, 1))
                Next
            End With
        Next
    End With
End Sub


1 commentaires

Solution très élégante, +1 :)