2017-01-20 3 views
1

J'ai une formule qui fonctionne dans Excel, et je pensais la faire fonctionner dans LibreOffice, mais j'obtiens des résultats différents entre les programmes. J'ai affaire à une base de données de forum longue de dizaines de milliers de lignes, donc je ne peux pas le faire manuellement comme je l'ai ici.La fonction d'agrégation LibreOffice ne fonctionne pas correctement

J'ai une table qui devrait ressembler à ceci (et fait dans Excel):

messageid threadid replyto Last messageid in thread 
3550  3550  0  3550 
3867  3867  0  4677 
3947  3867  3867   
3998  3867  3947   
4337  3867  3998   
4414  3867  4337   
4481  3867  4414   
4677  3867  3867   
3925  3925  0   7200 
4653  3925  3925   
4959  3925  4653   
7200  3925  3925   
4092  4092  0   4092 
5800  5800  0   5800 
5802  5802  0   5802 
7202  7202  0   7202 
7203  7203  0   7656 
7294  7203  7203   
7305  7203  7203   
7342  7203  7203   
7406  7203  7342   
7436  7203  7305   
7656  7203  7203 

Explication rapide, je suis en train de trouver le dernier « messageid » dans un threadid. Si le 'replyto' est 0, alors j'obtiens un résultat, si c'est <> 0, alors vide.

J'ai utilisé cette fonction dans Excel avec succès

=IF(C2=0,AGGREGATE(14,6,$A$2:$A$24/($B$2:$B$24=B2),1),"") 

Dans LibreOffice, je reçois des résultats différents en utilisant la même fonction. Au lieu du dernier (le plus grand) numéro du colonel Une projection, je reçois le premier numéro, il ressemble à ceci:

messageid threadid replyto Last messageid in thread 
3550  3550  0  3550 
3867  3867  0  3867 
3947  3867  3867   
3998  3867  3947   
4337  3867  3998   
4414  3867  4337   
4481  3867  4414   
4677  3867  3867   
3925  3925  0  3925 
4653  3925  3925   
4959  3925  4653   
7200  3925  3925  
4092  4092  0  4092 
5800  5800  0  5800 
5802  5802  0  5802 
7202  7202  0  7202 
7203  7203  0  7203 
7294  7203  7203   
7305  7203  7203   
7342  7203  7203   
7406  7203  7342   
7436  7203  7305   
7656  7203  7203 

Quelqu'un peut-il s'il vous plaît me aider?

Je n'ai pas accès à Excel au travail, et j'utilise LibreOffice, ce que j'apprécie normalement et je n'ai aucun problème avec.

Merci à l'avance, Melvins138

Répondre

1

semble que Calc ne parvient pas à obtenir le $A$2:$A$24/($B$2:$B$24=B2) comme un tableau directement dans la formule.

la formule matricielle:

{=IF(C2=0,MAX(IF($B$2:$B$24=B2,$A$2:$A$24,0)),"")} 

fonctionne dans les deux Excel ainsi que Calc.

Pour entrer une formule de tableau dans Excel la formule entrée dans la cellule sans les accolades et appuyez sur Ctrl + Maj +Entrez pour confirmer. Les accolades apparaissent ensuite automatiquement.

Pour entrer une formule matricielle dans Calc, entrez la formule dans la cellule sans les accolades. Ouvrez ensuite l'assistant de fonction à l'aide du bouton [fx]. Réglez le bouton [x] Array pour cocher. Dans Calc, ne remplissez pas une formule matricielle à l'aide du handle de remplissage de la cellule, car cela entraîne l'extension de la plage du tableau cible et non la copie de la formule. Au lieu de le copier dans le presse-papiers et collez-le à plusieurs cellules cibles.

+0

Je commençais juste à écrire la même chose, en fonction de votre réponse [ici] (http://stackoverflow.com/a/25486290/5100564). –