строки с автоматическим приращением, принадлежащие к одной группе значений - PullRequest
0 голосов
/ 25 января 2019

в столбце, у меня есть некоторые значения, подобные этому:

|------------|----------------|
|    false   | abc            |
|            | def            |
|    false   | mpla           |
|            | xyz            |
|-----------------------------|

и мне нужно иметь все строки от каждой ложной строки до следующего ложного значения, в группе, которая будет автоматически увеличиваться:

|------------|----------------|
|    1       | abc            |
|    1       | def            |
|    2       | mpla           |
|    2       | xyz            |
|-----------------------------|

с какой формулой Excel я попробую?

Ответы [ 3 ]

0 голосов
/ 25 января 2019

Как отметил Дмитрий, вы можете добавить дополнительную строку вверху и использовать ее для инициализации аккумулятора в нуле. Каждый раз, когда вы сталкиваетесь с непустой ячейкой, вы можете увеличивать предыдущее значение на 1.

Spreadsheet

Причина, по которой я не проверял ложь, заключается в том, что ложь немного сложнее. Если бы вы использовали ИСТИНА вместо ЛОЖЬ, ваша формула для строки 2 (далее) будет:

=$C1+IF($A2=TRUE,1,0)

В настоящее время у меня нет доступа к Excel, чтобы написать скрипт VB, но я написал простой скрипт Google для заполнения идентификаторов. Я уверен, что вы можете сделать что-то очень похожее в VB.

Пример данных

Group   Name    ID <-- Add third column
FALSE   abc
        def
FALSE   mpla
        xyz

Вы можете выполнить скрипт для запуска по листу и заполнения столбца идентификатора.

function autoAassignGroupId() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(),
      rangeData = sheet.getDataRange(),
      lastColumn = rangeData.getLastColumn(),
      lastRow = rangeData.getLastRow(),
      searchRange = sheet.getRange(2, 1, lastRow-1, lastColumn-1),
      rangeValues = searchRange.getValues(),
      auto_index = 0;
  for (row = 0 ; row < lastRow - 1; row++) {
    if (rangeValues[row][0] === false) auto_index++;
    sheet.getRange(row + 2, lastColumn).setValue(auto_index);
  }
}
0 голосов
/ 25 января 2019

Просто кое-что отметить, без какой-либо строки помощника: =COUNTIF(INDIRECT("A1:A"&ROW(A1));FALSE).Думал, я бы это там написал:)

Очевидно, что если ваш столбец a содержит чистый текст, он становится: =COUNTIF(INDIRECT("A1:A"&ROW(A1));"FALSE")

0 голосов
/ 25 января 2019

Добавьте дополнительную строку перед вашими данными (строка 1), а затем поместите формулу =C1+IF(A2="false";1;0) в третий (C) столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...