1

Я пытаюсь собрать номера строк, которые соответствуют определенному значению в нескольких столбцах таблицы Excel. Поведение, которое я ищу, отражает таблицу ниже:

|---|---------|---------|---------|
| 1 | A       | B       | A       |
|---|---------|---------|---------|
| 2 | B       | A       | A       |
|---|---------|---------|---------|
| 3 | C       | A       | C       |
|---|---------|---------|---------|
| 4 | A       | A       | C       |
|---|---------|---------|---------|
| 5 | C       | B       | B       |
|---|---------|---------|---------|
| 6 | A       | B       | B       |
|---|---------|---------|---------|
|   | Results |         |         |
|---|---------|---------|---------|
| A | 1, 4, 6 | 2, 3, 4 | 1, 2    |
|---|---------|---------|---------|
| C | 3, 5    |         | 3, 4    |
|---|---------|---------|---------|

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

3 ответа3

1

Не красиво, но это коротко и начало.

Sub collectRows()

Set rngInput = Range("C2:E7")
Set rngFilter = Range("A10:A11")

For Each rngCell In rngInput
    If Not rngFilter.Find(what:=rngCell, LookAt:=xlWhole) Is Nothing Then
        rngFilterRow = rngFilter.Find(what:=rngCell, LookAt:=xlWhole).Row
        Cells(rngFilterRow, rngCell.Column) = Cells(rngFilterRow, rngCell.Column) & ", " & rngCell.Row
    End If
Next

End Sub
0

Должно ли это быть сделано в Excel. Просто подумав, что если вы загрузили данные на сервер SQL, было бы легко выполнить запрос, чтобы получить эту информацию.

0

Вот способ сделать это с помощью Google Apps Script для тех, кто может найти это полезным:

// Example Usage:
//    =collectMatches("A", C2:C5)
function collectMatches(target, columns) {
  collection = [];
  for (var i = 0; i < columns.length; i++) {
    if (columns[i][0].toLowerCase() === target.toLowerCase()) {
      Logger.log(target)
      collection.push(i+1)
    }
  };
  return collection.join(', ');
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .