powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Если столбец содержит цифру, то запомнить ее. КАК???
17 сообщений из 17, страница 1 из 1
Если столбец содержит цифру, то запомнить ее. КАК???
    #36238895
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот часть кода, в нем я пробегаю по столбцам, в поисках столбца с наименованием "остаток на конец недели/шт.", если этот столбец не первый, то перебираем строки этого столбца. Как таким же макаром, пробегаясь по столбцам, искать все цифровые значения и запоминать, в каких они ячейках, чтоб потом эти значения можно было выводить в отдельный столбец?


For i = StartCol To Sh.UsedRange.Columns.Count
If Cells(5, i).Value = "остаток на конец недели/шт." Then
iOstatok = iOstatok + 1
If iOstatok > 1 Then
For j = StartRow To Sh.UsedRange.Rows.Count
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36238912
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как таким же макаром, пробегаясь по столбцам, искать все цифровые значения и запоминать, в каких они ячейках, чтоб потом эти значения можно было выводить в отдельный столбец?
Где искать ? В нужной колонке ? Записывайте позицию (ряд, колонку) в массив.
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36238964
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, в колонке. если в столбце "остаток на конец недели/шт." встретилось отрицательное значение, то номер недели, который мы находим в столбцах Cells(3, i) записывается в отдельный столбец в ту строку, где найдено это отрицательное значение, причем он должен определить только первое встретившееся отрицательное значение и в соответствии с этим определить, на какой неделе (Cells(3, i)) оно встретилось. Вот полный код, но цикл получается бесконечный... Не пойму, как делать. Помогите начинающему

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim iKolOstatok As Integer
Dim i As Integer 'счетчик столбцов
Dim j As Integer 'счетчик строк
Dim iOstatok As Integer


Const StartCol = 8
Const StartRow = 3

iOstatok = 0


For i = StartCol To Sh.UsedRange.Columns.Count 'пробегаем по столбцам
If Cells(5, i).Value = "остаток на конец недели/шт." Then
iOstatok = iOstatok + 1
If iOstatok > 1 Then
If IsNumeric(Cells(3, i)) Then
iNedelya = i
For j = StartRow To Sh.UsedRange.Rows.Count 'пробегаем по строкам
If Cells(j, iOstatok) <= 0 And Cells(j, 4).Value = "pce" Then
Cells(j, 12) = Cells(3, iNedelya)

End If
Next j
End If
End If
End If
Next i







End Sub
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239023
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то я еще больше запутался...
По порядку:
1) нашли столбец "остаток на конец недели/шт."
2) если этот столбец не первый... по отношении к чему ? к началу столбцов ? тоесть нас интересуют столбцы 2-... ?
3) ищем отрицательные значение в этом столбце
Дальше ?
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239056
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем все выводит. только как теперь сделать так, чтоб если условие выполнилось первый раз, то есть нашли первое отрицательное значение в строке и все, цикл перебора переходил на следующую строку и столбец. а то у меня получается цикл бесконечный.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim iKolOstatok As Integer
Dim i As Integer 'счетчик столбцов
Dim j As Integer 'счетчик строк
Dim iOstatok As Integer



Const StartCol = 8
Const StartRow = 3

iOstatok = 0



For i = StartCol To Sh.UsedRange.Columns.Count 'пробегаем по столбцам
If Cells(5, i).Value = "остаток на конец недели/шт." Then
iOstatok = iOstatok + 1
If iOstatok > 1 Then
For j = StartRow To Sh.UsedRange.Rows.Count 'пробегаем по строкам
If Cells(j, iOstatok) <= 0 And Cells(j, 4).Value = "pce" Then
Cells(j, 12) = Cells(3, i - 2) - Cells(3, 8)

End If
Next j
End If
End If
Next i







End Sub
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239103
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как у Вас может быть бесконечный цикл, если у Вас указано конкретное значение когда окончится цикл:
For i = StartCol To Sh.UsedRange.Columns.Count - значения не бесконечные
For j = StartRow To Sh.UsedRange.Rows.Count - значения не бесконечные
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239125
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получается он бесконечно перебирает недели. Файл в аттаче
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239413
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, девушка... Мне тяжело проникнуть в тайну Ваших мыслей, поэтому вот что я сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub mojettak()
Dim i As Byte
Dim j As Integer
Dim sRow As Integer

For i =  11  To  44  Step  5 
    For j =  6  To  41 
            If Cells(j, i).Value <=  0  And Cells(j,  4 ).Value = "pce" And Not IsEmpty(Cells(j, i)) Then
            sRow = Cells(j, i).End(xlDown).Row +  1 
            j = Cells(j, i).End(xlDown).Row +  1 
            Cells(sRow, i).Value = тут делаете то что надо
            End If
    Next j
Next i

End SubПри условии, что форма постоянная Вам не нужно переберать все подряд...
Во-вторых, такая запись cells(row, column) - cells(row, column) мне кажется неправильной, так как cells это объект, а объекты нельзя отнимать... Могу ошибаться...
В-третьих, как поступать с ячейками, в которых НЕ УКАЗАНО ничего? 0 и пусто это разные вещи...
И последнее, если отрицательное значение или ноль в отдельном блоке рядов (7-11,13-17) уже найдено, он переходит на другой блок в этой же колонке...
И последнее, "итоговые ячейки" (12,18... в соответствующих колонках) должны быть пустые
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239417
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
End SubПри условии, что ...
Тут End Sub не нужно, случайно добавилось... Начинайте читать с При условии, что ...
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239487
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в том-то и дело, что форма может изменяться, поэтому и сделано так, как сделано. на данный момент он мне все отрицительные и нулевые значения находит, а мне нужны только те, которые встретились первый раз
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239495
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Slonevskayaв том-то и дело, что форма может изменяться, поэтому и сделано так, как сделано.
Сложно Вам тогда прийдется...
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239543
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть вы хотите сказать, что в VBA невозможно найти первый отрицательный элемент?
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36239826
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу сказать, что Вы игнорируете мои посты и уперлись в решение части задачи, не обращая внимание на общую картину... Плюс, Вы так не разу и не попытались доступно объяснить задачу...
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36241135
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задание я подробно объяснила, даже файл приложила. не пойму, что неясного? Вот файл рабочий, только на данный момент пользуюсь для просмотра заполненных строк использую Sh.UsedRange.Rows.Count, но появилась задача просматривать также и строки таблицы ниже, между основой таблицей и дополнительной существуют незаполненные строки, поэтому данный метод не подходит. если убираю этот метод, пишу просто при помощи цикла for от какой строки начинать просмотр и до какой, все равно не работает, соответственно, добавляю в условный оператор еще одно условие If Cells(j, 4).Value = "pce" And Cells(j, 4) = "1 SKU" Then .... все равно не работает. Подскажите, плиз, в чем может быть причина? Прилагаю файл с кодом работающим. Здесь напишу то, что изменяю

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer 'счетчик столбцов
Dim j As Integer 'счетчик строк
Dim M As Integer 'количество заполненных столбцов на листе
'Dim N As Integer 'количество заполненных строк на листе
Dim bFindNegativ As Boolean 'признак найденного отрицательного значения
Const StartCol = 8
Const StartRow = 3


If Target.Columns(1).Column = 12 Then Exit Sub 'если меняется столбец с запасом в неделях, то не выполнять процедуру, так как сама процедура меняет значение этого столбца
M = Sh.UsedRange.Columns.Count 'запомним количество заполненных столбцов на листе, чтобы каждый раз не вычислять
' N = Sh.UsedRange.Rows.Count 'запомним количество заполненных строк на листе, чтобы каждый раз не вычислять

For j = StartRow To 60 'пробегаем по строкам
If Cells(j, 4).Value = "pce" And Cells(j, 4) = "1 SKU" Then 'рассматриваем только строки, в которых Units = pce
bFindNegativ = False 'признак, что мы уже встретили первое отрицательное значение остатка, до просмотра мы его ещё не встретили
i = StartCol 'начинаем просматривать столбцы, начиная со столбца с номером StartCol
Do While Not bFindNegativ And i <= M 'просматриваем столбцы, пока не встретим отрицательное значение или не дойдем до последнего столбца
If Cells(5, i).Value = "остаток на конец недели/шт." And Cells(j, i) <= 0 Then 'если нам встретился столбец с остатками, в котором отрицательное значение
Cells(j, 12) = Cells(3, i - 2) - Cells(3, 13) 'заполняем зпапс в неделях соответствующим значением
bFindNegativ = True 'устанавливаем признак, что отрицательное значение встретилось и нам больше не нужно просматривать столбцы
End If
i = i + 1 ' переходим на следующий столбец
Loop
If Not bFindNegativ Then 'если просмотрели все столбцы, а отрицательного значения так и не встретили, то очищаем значение в столбце с запасом в неделях
Cells(j, 12) = "8"
End If
End If
Next j
End Sub
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36241242
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oksana Slonevskayaзадание я подробно объяснила, даже файл приложила. не пойму, что неясного?
Извините, но я не понимаю, возможно я недостаточно сообразительный... Здесь много знающих, думаю Вам обязательно кто-то поможет [надо только что бы он был посообразительней чем я]...
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36241294
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что конкретно не понятно? В приложенном файле есть даже подробные комментарии по коду
...
Рейтинг: 0 / 0
Если столбец содержит цифру, то запомнить ее. КАК???
    #36241456
Oksana Slonevskaya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, тема закрыта )))
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Если столбец содержит цифру, то запомнить ее. КАК???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]