2012-04-10 4 views
0

В настоящее время у меня есть vlookup заполняющая строка 1 (ячейки G1-AZ1) с заголовками и хотелось бы скрыть столбцы (G1-AZ1), если vlookup отбрасывает ничего/# N/A. Я знаю, что это простой макрос, но я новичок в VBA, и мне не повезло искать в Интернете. Спасибо!Как скрыть столбцы (G-AZ), когда значение ячейки равно # N/A

ответ

1

Я обычно размещают такие формулы в ISNA(), а затем просто использовать Excel фильтр, чтобы скрыть пустые строки

=IF(ISNA(VLOOKUP(A3,G1:H7,2,FALSE)),"",VLOOKUP(A3,G1:H7,2,FALSE)) 
+0

+1 для поддержания его просто :) –

+0

возможность использовать Excel для фильтрации по строке Вы? Я думал, что фильтруются только по столбцам? Я хотел бы, чтобы шаблон автоматически скрывал столбцы, которые не заполнены заголовком. Каждый столбец содержит 50 ячеек, заполненных ниже, которые я использую, если заголовок заполнен. – user1324883

+0

Когда вы применяете фильтр к столбцам, он показывает/скрывает целую строку, если утверждение фильтра истинно (или false - это зависит от ваших намерений) (убедитесь, что вы выбрали все ячейки данных до того, как вы установите фильтр) – Andrew

1

Попробуйте это:

  1. Loop Повсеместно он заголовка ячеек
  2. Set the EntireColumn.Hidden по вашему критерию
  3. Используйте .ScreenUpdating = False, чтобы предотвратить мерцание экрана и sp Eed его

Sub HideColumns() 
    Dim rng As Range 
    Dim cl As Range 

    Application.ScreenUpdating = False 
    Set rng = [G1:AZ1] 
    For Each cl In rng 
     If IsError(cl) Then 
      cl.EntireColumn.Hidden = cl = CVErr(xlErrNA) 
     Else 
      cl.EntireColumn.Hidden = cl = "" 
     End If 
    Next 
    Application.ScreenUpdating = True 
End Sub 
+0

Чтобы сделать это даже менее читаемо, вы могли бы написать 'cl.EntireColumn.Hidden = (IsError (cl) И cl = CVErr (xlErrNA)) Или (Not IsError (cl) И cl = CVErr (xlErrNA))' ;-) +1 –