الجمع بين IF آخر مع LEFT لإخفاء الأعمدة
-
06-07-2019 - |
سؤال
وأنا أحاول كتابة بعض الرموز لإخفاء الأعمدة إذا كانت الأحرف 3 الأولى من الخلايا في نطاق تساوي محتويات أخرى. لدي رمز لإخفاء الأعمدة إذا الخلايا في نطاق فارغة لأن هذا؛ -
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, cell As Range
On Error GoTo ErrHandler
Set r = Me.Range("C8:R8")
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cell In r
If cell.Value = "" Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
Next
ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
ورمز للidentifiying 3 يتضمن أحرف الأولى من الخلية؛ -
Dim LResult As String
LResult = Left ("Alphabet",3)
ولكن كيف لي أن الجمع بين الأمرين، الرجوع إلى خلية معينة بدلا من "الأبجدية"؟
وغير قادر على الحصول على هذا العمل - أي اقتراحات
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, cell As Range
On Error GoTo ErrHandler
Set r = Me.Range("B7:CG7")
Application.ScreenUpdating = False
Application.EnableEvents = False
Row = 1
col = 1
For Each cell In r
If cell.Value = "" And Left(cell.Value, 3) = cell(Row, col).Value Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
Next
ErrHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
وهتاف
المحلول
لديك رمز عمل تقريبا. أنت تقارن cell.Value إلى سلسلة فارغة - الآن فقط تطبق من اليسار إلى ذلك
LResult = Left (cell.Value,3)
وتحرير:
row = 20
col = 30
For Each cell In r
If cell.Value = "" and Left (cell.Value,3) = Cell(row, col).Value Then
cell.EntireColumn.Hidden = True
Else
cell.EntireColumn.Hidden = False
End If
وحيث تريد البيانات من خلية في الصف والعمود (كنت 20، 30 كما في المثال)
لا تنتمي إلى StackOverflow