web-dev-qa-db-fra.com

Comment référencer les valeurs des cellules fusionnées dans les formules?

Disons que j'ai le tableau suivant (avec les cellules A1 et A2 fusionnées pour avoir la valeur commune de 500):

 | Col A | Col B | Col C  |
 |-------|-------|--------|
1| 500   | 100   | =A1+B1 |
2|       | 200   | =A2+B2 |

La valeur de C1 est correctement renseignée dans 600 tandis que la valeur de C2 est renseignée sous la forme 200 au lieu du 700 attendu. En effet, même si la cellule A2 est fusionnée avec A1 qui a la valeur 500, la référence à A2 renvoie 0.

Existe-t-il un moyen de référencer la valeur de la cellule fusionnée dans une formule?

Par exemple, existe-t-il une formule qui, lorsqu'elle est transmise, renvoie une référence de cellule A2 renvoie la valeur de A1 ou m'indique que A2 a été fusionné avec un emplacement en haut à gauche de A1?

Existe-t-il des solutions de contournement plus pratiques que le copier-coller (puis le maintien synchronisé) des valeurs de A1 et A2?

2
Jacob Horbulyk

plus pratique que de copier et coller (puis de rester synchronisé) les valeurs de A1 et A2?

Si vous voulez que A2 ait la même valeur que A1, ne les fusionnez pas, mais entrez =A1 dans A2. Cela permet de les garder synchronisés; seul A1 devrait être mis à jour.

Les formules de feuille de calcul doivent faire référence aux cellules fusionnées par leur entrée en haut à gauche. Ils ne peuvent pas détecter que des cellules ont été fusionnées. Ainsi, il n'est pas conseillé pour les cellules avec des données qui seront utilisées ailleurs. La fusion de cellules convient pour le texte, par exemple. d'avoir un en-tête de table sur plusieurs colonnes.

Le script Google Apps peut détecter la fusion avec la méthode isPartOfMerge et trouver la plage dans laquelle la cellule est fusionnée avec la méthode getMergedRanges. J'ai écrit un fonction personnalisée qui récupère la valeur d'une cellule lorsque l'adresse de la cellule est transmise sous forme de chaîne, par exemple, =cellVal("A3").

function cellVal(cellAddress) {
  var cell = SpreadsheetApp.getActiveSheet().getRange(cellAddress);
  return (cell.isPartOfMerge() ? cell.getMergedRanges()[0].getCell(1, 1) : cell).getValue();
}

Ceci est seulement conçu comme une démonstration; Je ne recommande pas d'utiliser des fonctions personnalisées pour récupérer des données à partir d'une cellule.

2
user135384

Voici ce que j'ai fait et cela a fonctionné pour moi.

     | Col A | Col B  |
     |-------|--------|
    1| 500   | =A1*2  |
    2|       | =B1    |
    3|       | =B2    |

Vous pouvez ensuite prendre ce groupe et le copier un peu plus, au besoin.

     | Col A | Col B  |
     |-------|--------|
    1| 500   | =A1*2  |
    2|       | =B1    |
    3|       | =B2    |
    4| 1000  | =A4*2  |
    5|       | =B4    |
    6|       | =B5    |
0
E M P
     | Col A | Col B | Col C |
     +-------+-------+-------+
    1|       |  100  |  600  | =A1+B1
     +  500  +-------+-------+
    2|       |  200  |  700  | =A1+B2
     +-------+-------+-------+
    3|       |       |       |
     +-------+-------+-------+

si vous avez besoin de le faire glisser, verrouillez le numéro:

     | Col A | Col B | Col C |
     +-------+-------+-------+
    1|       |  100  |  600  | =A$1+B1
     +  500  +-------+-------+
    2|       |  200  |  700  | =A$1+B2
     +-------+-------+-------+
    3|       |       |       |
     +-------+-------+-------+
0
user0