Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заполнение ячеек по заданному параметру - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение ячеек по заданному параметру (Формулы/Formulas)
Заполнение ячеек по заданному параметру
BlackJek Дата: Понедельник, 05.06.2017, 12:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, коллеги!
Помогите в написании функции / формулы для гидравлического расчета пожаротушения.
Смысл расчета - проектировщик пишет - нумерацию насадков, участвующие на данном участке , например "1-5, 7-10, 25", то программа должна АВТОМАТИЧЕСКИ заполнить в каждом ячейке одного столбца перечень насадков , например в данном случае "1,2,3,4,5,7,8,9,10,25"
Спасибо
К сообщению приложен файл: 3660303.xlsx(11Kb)
 
Ответить
СообщениеДобрый день, коллеги!
Помогите в написании функции / формулы для гидравлического расчета пожаротушения.
Смысл расчета - проектировщик пишет - нумерацию насадков, участвующие на данном участке , например "1-5, 7-10, 25", то программа должна АВТОМАТИЧЕСКИ заполнить в каждом ячейке одного столбца перечень насадков , например в данном случае "1,2,3,4,5,7,8,9,10,25"
Спасибо

Автор - BlackJek
Дата добавления - 05.06.2017 в 12:37
sboy Дата: Понедельник, 05.06.2017, 14:21 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 4 Then Exit Sub
ic = Target.Column
If ic < 8 Or ic > 10 Then Exit Sub
irow = 8
Range(Cells(8, ic), Cells(19, ic)).ClearContents
    s = Split(Replace(Target.Value, " ", ""), ",")
    For x = 0 To UBound(s)
        pp = InStr(1, s(x), "-")
        If pp Then
            ifirst = Left(s(x), pp - 1)
            y = -Evaluate(s(x))
                    For ir = irow To irow + y
                    Cells(ir, ic).Value = ifirst
                    irow = irow + 1
                    ifirst = ifirst + 1
                Next ir
            Else
            Cells(irow, ic).Value = s(x)
            irow = irow + 1
        End If
    Next x
End Sub
[/vba]
К сообщению приложен файл: 3660303.xls(44Kb)
 
Ответить
СообщениеДобрый день.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 4 Then Exit Sub
ic = Target.Column
If ic < 8 Or ic > 10 Then Exit Sub
irow = 8
Range(Cells(8, ic), Cells(19, ic)).ClearContents
    s = Split(Replace(Target.Value, " ", ""), ",")
    For x = 0 To UBound(s)
        pp = InStr(1, s(x), "-")
        If pp Then
            ifirst = Left(s(x), pp - 1)
            y = -Evaluate(s(x))
                    For ir = irow To irow + y
                    Cells(ir, ic).Value = ifirst
                    irow = irow + 1
                    ifirst = ifirst + 1
                Next ir
            Else
            Cells(irow, ic).Value = s(x)
            irow = irow + 1
        End If
    Next x
End Sub
[/vba]

Автор - sboy
Дата добавления - 05.06.2017 в 14:21
BlackJek Дата: Понедельник, 05.06.2017, 15:38 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Работает! Спасибо!
Но есть одно НО . Можно ли сделать количество вводимых ячеек, например до 40? А то сейчас в данном случае - до 12 ячеек контролируется. Например вводишь 1-14 , программа заполняет ячейки от 1 до 14, а когда начинаешь исправлять вводимую ячейку, т.е. написать другое число , то стирается с 1 по 12, а 13,14 остаются на таблице.
Спасибо
 
Ответить
СообщениеРаботает! Спасибо!
Но есть одно НО . Можно ли сделать количество вводимых ячеек, например до 40? А то сейчас в данном случае - до 12 ячеек контролируется. Например вводишь 1-14 , программа заполняет ячейки от 1 до 14, а когда начинаешь исправлять вводимую ячейку, т.е. написать другое число , то стирается с 1 по 12, а 13,14 остаются на таблице.
Спасибо

Автор - BlackJek
Дата добавления - 05.06.2017 в 15:38
BlackJek Дата: Понедельник, 05.06.2017, 15:48 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ограничить ввод до 40 оросителей. при вводе 41 и более оросителей - ввести бы запрет ввода.
 
Ответить
СообщениеОграничить ввод до 40 оросителей. при вводе 41 и более оросителей - ввести бы запрет ввода.

Автор - BlackJek
Дата добавления - 05.06.2017 в 15:48
sboy Дата: Понедельник, 05.06.2017, 15:52 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
Ограничить ввод до 40

Вы имеете ввиду вывод результата?
В этой строке поменяйте 19 на 47 (будет 40)[vba]
Код
Range(Cells(8, ic), Cells(19, ic)).ClearContents
[/vba]


Сообщение отредактировал sboy - Понедельник, 05.06.2017, 15:54
 
Ответить
Сообщение
Ограничить ввод до 40

Вы имеете ввиду вывод результата?
В этой строке поменяйте 19 на 47 (будет 40)[vba]
Код
Range(Cells(8, ic), Cells(19, ic)).ClearContents
[/vba]

Автор - sboy
Дата добавления - 05.06.2017 в 15:52
BlackJek Дата: Понедельник, 05.06.2017, 15:55 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Хм, точно , спасибо .
а запрет ввода чисел после 41 можно сделать ?
 
Ответить
СообщениеХм, точно , спасибо .
а запрет ввода чисел после 41 можно сделать ?

Автор - BlackJek
Дата добавления - 05.06.2017 в 15:55
sboy Дата: Понедельник, 05.06.2017, 16:25 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
BlackJek, именно чисел? или количество чисел?
 
Ответить
СообщениеBlackJek, именно чисел? или количество чисел?

Автор - sboy
Дата добавления - 05.06.2017 в 16:25
AlexM Дата: Понедельник, 05.06.2017, 16:35 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3560
Репутация: 898 ±
Замечаний: 0% ±

Excel 2003
Вариант с функцией пользователя.[vba]
Код
Function BlackJek(iStr As String, N As Long)
    Dim t As Long, i As Long, j As Long
    Dim a, b
    t = 1
    a = Split(Replace(iStr, " ", ""), ",")
    For i = 0 To UBound(a)
        If InStr(a(i), "-") > 0 Then
            b = Split(a(i), "-")
            For j = b(0) To b(1)
                If t = N Then BlackJek = j: Exit Function
                t = t + 1
            Next j
        Else
            If t = N Then BlackJek = Int(a(i)): Exit Function
            t = t + 1
        End If
    Next i
    BlackJek = ""
End Function
[/vba]
К сообщению приложен файл: 3660303_01.xlsm(17Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеВариант с функцией пользователя.[vba]
Код
Function BlackJek(iStr As String, N As Long)
    Dim t As Long, i As Long, j As Long
    Dim a, b
    t = 1
    a = Split(Replace(iStr, " ", ""), ",")
    For i = 0 To UBound(a)
        If InStr(a(i), "-") > 0 Then
            b = Split(a(i), "-")
            For j = b(0) To b(1)
                If t = N Then BlackJek = j: Exit Function
                t = t + 1
            Next j
        Else
            If t = N Then BlackJek = Int(a(i)): Exit Function
            t = t + 1
        End If
    Next i
    BlackJek = ""
End Function
[/vba]

Автор - AlexM
Дата добавления - 05.06.2017 в 16:35
BlackJek Дата: Понедельник, 05.06.2017, 17:12 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
до 40 ячеек
 
Ответить
Сообщениедо 40 ячеек

Автор - BlackJek
Дата добавления - 05.06.2017 в 17:12
AlexM Дата: Понедельник, 05.06.2017, 17:19 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3560
Репутация: 898 ±
Замечаний: 0% ±

Excel 2003
запрет ввода чисел после 41 можно сделать
Не совсем понятно.
Покажите в файле строки с числами допустимые и нет



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
запрет ввода чисел после 41 можно сделать
Не совсем понятно.
Покажите в файле строки с числами допустимые и нет

Автор - AlexM
Дата добавления - 05.06.2017 в 17:19
sboy Дата: Понедельник, 05.06.2017, 18:02 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
BlackJek, проверяйте
К сообщению приложен файл: 4802942.xls(55Kb)
 
Ответить
СообщениеBlackJek, проверяйте

Автор - sboy
Дата добавления - 05.06.2017 в 18:02
BlackJek Дата: Вторник, 06.06.2017, 11:58 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день, Коллеги! sboy, AlexM спасибо за помощь! Все вроде верно, близко , но чуть чуть не то. Извините , что Вас немного напряг. Вот скидываю файл - думаю там понятно будет!

sboy - у Вас совсем близко! Но почему я не могу ввести 1-40 (сообщает "Количество больше 40"), и дает возможность ввести повторяющие числа ..
К сообщению приложен файл: 8838693.xlsx(15Kb)
 
Ответить
СообщениеДобрый день, Коллеги! sboy, AlexM спасибо за помощь! Все вроде верно, близко , но чуть чуть не то. Извините , что Вас немного напряг. Вот скидываю файл - думаю там понятно будет!

sboy - у Вас совсем близко! Но почему я не могу ввести 1-40 (сообщает "Количество больше 40"), и дает возможность ввести повторяющие числа ..

Автор - BlackJek
Дата добавления - 06.06.2017 в 11:58
sboy Дата: Вторник, 06.06.2017, 12:36 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
у Вас совсем близко!

несказанно этому рад :)
не могу ввести 1-40
поправил
дает возможность ввести повторяющие числа
об этом нигде сказано не было, бабы Ванги на другом форуме собираются! Добавил
Цитата
Т.е. 41, 42 оросителя нет!
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте
К сообщению приложен файл: 8838693.xls(74Kb)
 
Ответить
Сообщение
у Вас совсем близко!

несказанно этому рад :)
не могу ввести 1-40
поправил
дает возможность ввести повторяющие числа
об этом нигде сказано не было, бабы Ванги на другом форуме собираются! Добавил
Цитата
Т.е. 41, 42 оросителя нет!
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте

Автор - sboy
Дата добавления - 06.06.2017 в 12:36
AlexM Дата: Вторник, 06.06.2017, 12:40 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3560
Репутация: 898 ±
Замечаний: 0% ±

Excel 2003
Насколько я понимаю, надо делать еще проверку на корректность ввода текстовой строки, в которой числа и диапазоны чисел.
Надо проверять следующие моменты.
1. число или граница диапазона была не более 40
2. число не было равно любой границе диапазона.
3. число не должно попадать в диапазон
4. числа и диапазоны не должны повторяться.
5. диапазоны не должны пересекаться.

Возможно ли это сделать. Возможно.
Как представляю. Создать массив из всех отдельных чисел и чисел входящих в диапазоны.
Из полученного массива убрать повторы, т.е. сделать массив уникальных чисел и сделать сортировку по возрастанию.
Из массива уникальных чисел сформировать текстовую строку, по подобию той, что пишет оператор.
Сравнить строку написанную оператором и полученную. Если не совпадают, сообщить об ошибке ввода.
Если ошибок нет. Очистить столбец ниже и затем заполнить его значениями массива.

Мне кажется, что объем задачи большой, выходит за рамки хобби. Это уже работа.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Вторник, 06.06.2017, 12:41
 
Ответить
СообщениеНасколько я понимаю, надо делать еще проверку на корректность ввода текстовой строки, в которой числа и диапазоны чисел.
Надо проверять следующие моменты.
1. число или граница диапазона была не более 40
2. число не было равно любой границе диапазона.
3. число не должно попадать в диапазон
4. числа и диапазоны не должны повторяться.
5. диапазоны не должны пересекаться.

Возможно ли это сделать. Возможно.
Как представляю. Создать массив из всех отдельных чисел и чисел входящих в диапазоны.
Из полученного массива убрать повторы, т.е. сделать массив уникальных чисел и сделать сортировку по возрастанию.
Из массива уникальных чисел сформировать текстовую строку, по подобию той, что пишет оператор.
Сравнить строку написанную оператором и полученную. Если не совпадают, сообщить об ошибке ввода.
Если ошибок нет. Очистить столбец ниже и затем заполнить его значениями массива.

Мне кажется, что объем задачи большой, выходит за рамки хобби. Это уже работа.

Автор - AlexM
Дата добавления - 06.06.2017 в 12:40
BlackJek Дата: Вторник, 06.06.2017, 13:29 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Цитата BlackJek, 06.06.2017 в 11:58, в сообщении № 12 ( писал(а)):
дает возможность ввести повторяющие числа
об этом нигде сказано не было, бабы Ванги на другом форуме собираются! Добавил

Да, это я виноват!
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте

Нужно по НОМЕРУ, а остальное все правильно!
Простите за мои мучения
 
Ответить
Сообщение
Цитата BlackJek, 06.06.2017 в 11:58, в сообщении № 12 ( писал(а)):
дает возможность ввести повторяющие числа
об этом нигде сказано не было, бабы Ванги на другом форуме собираются! Добавил

Да, это я виноват!
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте

Нужно по НОМЕРУ, а остальное все правильно!
Простите за мои мучения

Автор - BlackJek
Дата добавления - 06.06.2017 в 13:29
sboy Дата: Вторник, 06.06.2017, 14:23 | Сообщение № 16
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
Нужно по НОМЕРУ

проверяйте
К сообщению приложен файл: 8820749.xls(74Kb)
 
Ответить
Сообщение
Нужно по НОМЕРУ

проверяйте

Автор - sboy
Дата добавления - 06.06.2017 в 14:23
BlackJek Дата: Вторник, 06.06.2017, 14:28 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да , да, да, да! Спасибо большое - то, что я хотел!
 
Ответить
СообщениеДа , да, да, да! Спасибо большое - то, что я хотел!

Автор - BlackJek
Дата добавления - 06.06.2017 в 14:28
BlackJek Дата: Вторник, 06.06.2017, 15:09 | Сообщение № 18
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Сергей Спасибо тебе огромное!
Хотелось добавить - а можно сделать запрет на ноль.
И когда на ячейке , где мы пишем значения нажимаем "DELETE" выскакивает ошибка программы
 
Ответить
СообщениеСергей Спасибо тебе огромное!
Хотелось добавить - а можно сделать запрет на ноль.
И когда на ячейке , где мы пишем значения нажимаем "DELETE" выскакивает ошибка программы

Автор - BlackJek
Дата добавления - 06.06.2017 в 15:09
sboy Дата: Вторник, 06.06.2017, 16:33 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 784
Репутация: 203 ±
Замечаний: 0% ±

Excel 2010
Хотелось добавить - а можно сделать запрет на ноль

может уже выложите все пожелания-ограничения, а то напоминает сказку про золотую рыбку)
Вангую: следующим будет ограничение на отрицательные числа, угадал?
нажимаем "DELETE" выскакивает ошибка
поправил
К сообщению приложен файл: 9767198.xls(74Kb)
 
Ответить
Сообщение
Хотелось добавить - а можно сделать запрет на ноль

может уже выложите все пожелания-ограничения, а то напоминает сказку про золотую рыбку)
Вангую: следующим будет ограничение на отрицательные числа, угадал?
нажимаем "DELETE" выскакивает ошибка
поправил

Автор - sboy
Дата добавления - 06.06.2017 в 16:33
BlackJek Дата: Вторник, 06.06.2017, 17:16 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
да. все. спасибо
 
Ответить
Сообщениеда. все. спасибо

Автор - BlackJek
Дата добавления - 06.06.2017 в 17:16
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение ячеек по заданному параметру (Формулы/Formulas)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!