Если честно, я не понимаю как работает формула. Из того что я вижу, увеличить можно меняя в Е1 синхронно количество столбцов в СТОЛБЕЦ(C:S) и ячеек в Ч(+C1:C17). Например (СТОЛБЕЦ(C:T)-3));2);Ч(+C1:C18) СТОЛБЕЦ(C:U)-3));2);Ч(+C1:C19)
Sub AllVariants() lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row currRow = 1 For i = 1 To lastRow For j = 1 To lastRow For k = 1 To lastRow ActiveSheet.Cells(currRow, 4) = ActiveSheet.Cells(i, 1) & ActiveSheet.Cells(j, 2) & ActiveSheet.Cells(k, 3) currRow = currRow + 1 Next k Next j Next i End Sub
Sub HideEmptyCellInRanges()
Dim i As Long
Dim RowRange As Range, cell As Range
Dim checkedRows As Object
Dim rangeAddress As String
Application.ScreenUpdating = False
If TypeName(Selection) = "Range" Then
Set checkedRows = CreateObject("Scripting.Dictionary")
For Each cell In Selection
i = cell.Row
rangeAddress = "D" & i & ":H" & i & ",J" & i & ":J" & i & ",L" & i & ":L" & i & ",N" & i & ":P" & i & _
",R" & i & ":R" & i & ",T" & i & ":V" & i & ",X" & i & ":Y" & i & ",AA" & i & ":AA" & i
If Not checkedRows.exists(i) Then
checkedRows.Add i, True
Set RowRange = ActiveSheet.Range(rangeAddress)
If Application.WorksheetFunction.CountA(RowRange) = 0 Then
ActiveSheet.Rows(i).EntireRow.Hidden = True
End If
End If
Next cell
End If
Set RowRange = Nothing
Set checkedRows = Nothing
Application.ScreenUpdating = True
End Sub
написал: вот нет разницы, для функции что "<>"&2024 что "<>2024" - это текст.
Да, это я уже понял. В любом случае сравнение будет с текстом. Вот только тогда получается что в диапазоне условия числовые значения преобразуются в текстовые и тогда сравнения происходят корректно, а числа сохраненные как текст зачем-то переводятся в числовые (числовые ли, кстати?) и тогда сравнение происходит некорректно. Hugo, спасибо.
Самое странное, что такая формула (2024 без кавычек) тоже не работает:
=СЧЁТЕСЛИМН(D:D;H3;C:C;"<>"&2024)
Получается Эксель автоматически содержимое в диапазоне условия переводит из текста в числовую форму, а в самом условии наоборот из числа в текст. Умно...
Sanim, так в этом то и загвоздка. Два соседних столбца - в первом просто текст, во втором число сохранено как текст. В первом столбце "<>" работает, а во втором - не работает. Хочется понять почему. В любом случае, спасибо за участие. UPD для лучшего понимания вопроса: =СЧЁТЕСЛИМН(C:C;"2024";D:D;"<>"&"Югорск") - работает правильно.
Это нормальная реакция для СУМЕСЛИ. Можно просто не нажимать "обновить". Вот с другой формулой вариант: =СУММПРОИЗВ('[Cводный журнал - 2024.xlsx]Apr'!$C:$C;(--('[Cводный журнал - 2024.xlsx]Apr'!$A:$A=$A$1))*(--('[Cводный журнал - 2024.xlsx]Apr'!$B:$B="401 "&ПОДСТАВИТЬ(A2;".";":"))))
Добрый день. Я не большой сторонник добавлять в формулы которые должны выводить числовые значения, вывод текстовых значений. Лучше ничего не выводить или хотя бы прочерк. Но если очень хочется, то можно вот так: =ЕСЛИ(СУММЕСЛИМН('[Cводный журнал - 2024.xlsx]Apr'!$C:$C;'[Cводный журнал - 2024.xlsx]Apr'!$A:$A;$A$1;'[Cводный журнал - 2024.xlsx]Apr'!$B:$B;"401*";'[Cводный журнал - 2024.xlsx]Apr'!$B:$B;"*"&ПОДСТАВИТЬ(A2;".";":"))<>0;СУММЕСЛИМН('[Cводный журнал - 2024.xlsx]Apr'!$C:$C;'[Cводный журнал - 2024.xlsx]Apr'!$A:$A;$A$1;'[Cводный журнал - 2024.xlsx]Apr'!$B:$B;"401*";'[Cводный журнал - 2024.xlsx]Apr'!$B:$B;"*"&ПОДСТАВИТЬ(A2;".";":"));"пусто")
т.е. добавить в формулу ЕСЛИ =ЕСЛИ(ФОРМУЛА<>0;ФОРМУЛА;"пусто")
Но лучше воспользоваться советами из этой темы: скрыть нулевые значения Формат ячеек в вашем случае будет # ##0,00;-# ##0,00;"пусто"
Шобы я послал девушку... в другую тему? Да за кого вы меня принимаете! ))) Я предложил вариант для названия вашей темы, чтобы ее проще было найти другим.
Цитата
написал: Я имела ввиду что число при окончании двух смен меняется на следующее.
Можно сделать к примеру, привязку к слову NIGHT. Но следить, чтобы оно обязательно было в нужном столбце. =$A$2+СЧЁТЕСЛИ($B$3:B3;$B$2)
написал: Сотрудник вносит все значения согласно выданному на приборе,он не может их изменить и таблицу изменить тоже не может к сожалению
Если сотрудник добавит столбец с датой в первом столбце, например. Это сильно упростит всем жизнь. Вплоть до того, что вы сами сможете разобраться с формулой, которая будет выбирать нужные вам значения. В ином случае вы будете вынуждены каждый раз при непонятной ситуации обращаться на форум.
Проверьте: Есть ли в файле "01_Закрытие_Январь 2024_.xlsx" вкладка "БН" Есть ли в файле "Отчет_10.2.03.1_«Детальный.Агрегированный» BASE.xlsx" на листе "Лист1" в столбце 1 ячейка со значением "F_*"
Ну если заработало - значит правильно... Только надо иметь ввиду, то, что данные во вкладке "Расход" постоянно перезаписываются без удаления старых данных.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 Then
If Not IsNumeric(Target.Value) Or Target.Value = "" Then
Exit Sub
End If
Else
Exit Sub
End If
Application.EnableEvents = False
If Target.Column = 2 Then
Cells(Target.Row, Target.Column + 2) = Cells(Target.Row, Target.Column) + Cells(Target.Row, Target.Column + 1)
Else
If Target.Column = 3 Then
Cells(Target.Row, Target.Column + 1) = Cells(Target.Row, Target.Column - 1) + Cells(Target.Row, Target.Column)
Else
If Target.Column = 4 Then
Cells(Target.Row, Target.Column - 2) = Cells(Target.Row, Target.Column) - Cells(Target.Row, Target.Column - 1)
End If
End If
End If
Application.EnableEvents = True
End Sub