2015-08-16 4 views
1

Я посмотрел, но не нашел решение задачи, которую я пытаюсь выполнить. Я новичок в VBA, поэтому кривая обучения крутая. Вот что я пытаюсь сделать:Выберите отображаемые строки на основе критериев пользователя

В Excel 2010/2013 у меня есть рабочий лист с фиксированным контентом в верхних 9 строках и начиная с строки 10, строки данных с последовательными датами в столбце B. Мне нужно чтобы пользователи могли оценивать данные в определенном подмножестве всех дат в листе.

Например: Пользователь вводит значения «06/15/15» в ячейке K1 и «06/19/15» в ячейке N1. Строки с 10 по 20 содержат запись, причем столбец B является полем даты для каждой записи. В этом примере ячейка B10 содержит дату 06/12/15 через ячейку B20, которая содержит дату 06/22/15. Мне нужен код, чтобы посмотреть содержимое ячеек K1 и N1, интерпретировать их как границы диапазона дат и отображать только строки данных, которые имеют значение строки 10 или больше и находятся в пределах указанного диапазона, скрывая все остальные, оставляя видимыми строки заголовков с 1 по 9. Должны быть видны только строки размером более 9 с датами между и включенными пользователем критериями.

+0

Если вы публикуете свою попытку написания этого кода, мы можем помочь с любыми проблемами, которые могут возникнуть с вами. SO не является службой запроса кода. –

+0

@iturner - Я понимаю, что вы говорите, но мои попытки не привели ни к чему полезному, и я удалил их, когда они не сработали. Я слишком новичок в этом, я полагаю. –

ответ

0

попробовать что-то вроде этого:

dim iRow as integer 
dim iColumn as integer 

iRow = 10  'Row 10 
iColumn = 2 'Column B 

do until activesheet.cells(iRow, iColumn).value = "" 
    if datediff("d", activesheet.range("K1").value, _ 
     activesheet.cells(iRow, iColumn).value) => -10 AND _ 
     datediff("d", activesheet.range("N1").value, _ 
     activesheet.cells(iRow, iColumn).value) =< 10 then _ 
     activesheet.rows(iRow).entirerow.hidden = true 
    iRow = iRow + 1 
loop 

Если вам нужно проверить несколько столбцов, вы можете добавить дополнительный цикл внутри этой петли с iColumn = iColumn + 1. Это то, что вы искали?

Смежные вопросы