Как просмотреть лист и найти значение, получить столбец, а затем подсчитать, сколько раз значение появляется в этом столбце - PullRequest
0 голосов
/ 20 декабря 2018

Я работаю с данными, которые мне отправляют.Листы всегда содержат одинаковые заголовки, хотя на самом деле они не являются заголовками, потому что они не представлены в виде таблицы, но столбцы меняются при каждом извлечении, поэтому они никогда не находятся в одном и том же столбце, поэтому я не могу выполнить индексное совпадение, как я ».м привык.Мне нужно, чтобы это работало без преобразования данных в таблицу, потому что другие, которые используют это, не знают, как это сделать.Есть ли способ поиска на листе, чтобы найти ячейку, содержащую значение, захватить адрес этого столбца, а затем подсчитать, сколько раз столбец содержит букву?

У меня есть первая страница Excel, которая ведет учет того, какмного раз что-то происходит.В настоящее время я использую эту формулу = COUNTIF ('UDO'! AJ: AJ, "Y").Работает только то, что я не могу установить его как массив, потому что столбец не всегда AJ, поэтому мне всегда приходится менять его вручную, и я хотел бы его автоматизировать.Поэтому я хочу иметь возможность искать на листе, который содержит информацию для примера текстового значения: «Просмотрите обязательный FY *», и получить столбец, содержащий это (это должно быть уникальное значение), затем я хочу просмотреть этот столбец иесли в ячейке указано "Y" или "y".Листы всегда различаются по длине и номерам столбцов.Я думал об использовании HLookUp, но не могу заставить его работать.Я также не смог заставить работать Index Match, потому что никогда не знал, сколько данных или порядка столбцов будет на вкладке Audit.

Итак, на вкладке «Главная» у меня есть ячейка, которая подсчитывает, сколько файлов я должен проверить, я хочу перейти на вкладку «Аудит», найти «Просмотр необходимого FY *», захватить этот столбец и подсчитать, сколько раз »Y "или" y "здесь.Я хотел бы иметь возможность настроить это, чтобы сделать все это самостоятельно.

В настоящее время у меня нет кода, потому что я не могу найти ничего, что работает.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Использование VBA

Option Explicit

Sub Looper()

Dim ws As Worksheet, Found As Range, LR As Long

For Each ws In Worksheets
    Set Found = ws.Cells.Find("Review Required FY*")
        If Not Found Is Nothing Then
            LR = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row
            MsgBox Application.WorksheetFunction.CountIf(ws.Range(ws.Cells(1, Found.Column), ws.Cells(LR, Found.Column)), "Y")
        End If
    Set Found = Nothing
Next ws

End Sub
0 голосов
/ 20 декабря 2018

Предполагая, что заголовок появляется только один раз, вы можете узнать, в какой строке находится ваш заголовок, вы можете использовать формулу массива, подобную этой (применить, используя Ctrl + Shift + Enter):

=MAX(ROW(A1:A10)*COUNTIF(OFFSET(A1:Z1,ROW(A1:A10)-1,0),"Review Required FY*"))

(выглядит впервые 10 строк по A: Z) * ​​1004 *

Вы можете передать результат этого в поиск, чтобы найти номер столбца.

РЕДАКТИРОВАТЬ - что-то вроде этого:

enter image description here

Первая формула должна быть введена с помощью Ctrl + Shift + Enter, а остальные 2 - нет.

1000 в последней формуле является лучшим предположениемв том, сколько данных может быть ниже вашего заголовка - нет проблем с настройкой гораздо большего, чтобы быть на безопасной стороне, если вы не пытаетесь считать за концом листа.

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