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

 

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

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Заполнение ячеек по заданному параметру
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 (11.4 Kb)
 
Ответить
СообщениеДобрый день, коллеги!
Помогите в написании функции / формулы для гидравлического расчета пожаротушения.
Смысл расчета - проектировщик пишет - нумерацию насадков, участвующие на данном участке , например "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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.

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

К сообщению приложен файл: 3660303.xls (43.5 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
[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 xEnd 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Цитата BlackJek, 05.06.2017 в 15:48, в сообщении № 4 ( писал(а)):
Ограничить ввод до 40

Вы имеете ввиду вывод результата?
В этой строке поменяйте 19 на 47 (будет 40)

Range(Cells(8, ic), Cells(19, ic)).ClearContents



Яндекс: 410016850021169

Сообщение отредактировал sboy - Понедельник, 05.06.2017, 15:54
 
Ответить
Сообщение
Цитата BlackJek, 05.06.2017 в 15:48, в сообщении № 4 ( писал(а)):
Ограничить ввод до 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
BlackJek, именно чисел? или количество чисел?


Яндекс: 410016850021169
 
Ответить
СообщениеBlackJek, именно чисел? или количество чисел?

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

Excel 2003
Вариант с функцией пользователя.

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

К сообщению приложен файл: 3660303_01.xlsm (16.7 Kb)



Номер мобильного модема (без голосовой связи)
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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Цитата BlackJek, 05.06.2017 в 15:55, в сообщении № 6 ( писал(а)):
запрет ввода чисел после 41 можно сделать
Не совсем понятно.
Покажите в файле строки с числами допустимые и нет



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

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

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


Яндекс: 410016850021169
 
Ответить
Сообщение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 (14.5 Kb)
 
Ответить
СообщениеДобрый день, Коллеги! sboy, AlexM спасибо за помощь! Все вроде верно, близко , но чуть чуть не то. Извините , что Вас немного напряг. Вот скидываю файл - думаю там понятно будет!

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

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

Excel 2010
Цитата BlackJek, 06.06.2017 в 11:58, в сообщении № 12 ( писал(а)):
у Вас совсем близко!

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


Яндекс: 410016850021169
 
Ответить
Сообщение
Цитата BlackJek, 06.06.2017 в 11:58, в сообщении № 12 ( писал(а)):
у Вас совсем близко!

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

Автор - sboy
Дата добавления - 06.06.2017 в 12:36
AlexM Дата: Вторник, 06.06.2017, 12:40 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 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
Цитата sboy, 06.06.2017 в 12:36, в сообщении № 13 ( писал(а)):
Цитата BlackJek, 06.06.2017 в 11:58, в сообщении № 12 ( писал(а)):
дает возможность ввести повторяющие числа
об этом нигде сказано не было, бабы Ванги на другом форуме собираются! Добавил

Да, это я виноват!
Цитата sboy, 06.06.2017 в 12:36, в сообщении № 13 ( писал(а)):
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте

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

Да, это я виноват!
Цитата sboy, 06.06.2017 в 12:36, в сообщении № 13 ( писал(а)):
вот тут снова не понял, нет по номеру или количеству. Оставил по количеству. Проверяйте

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

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

Excel 2010
Цитата BlackJek, 06.06.2017 в 13:29, в сообщении № 15 ( писал(а)):
Нужно по НОМЕРУ

проверяйте
К сообщению приложен файл: 8820749.xls (73.5 Kb)


Яндекс: 410016850021169
 
Ответить
Сообщение
Цитата BlackJek, 06.06.2017 в 13:29, в сообщении № 15 ( писал(а)):
Нужно по НОМЕРУ

проверяйте

Автор - 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Цитата BlackJek, 06.06.2017 в 15:09, в сообщении № 18 ( писал(а)):
Хотелось добавить - а можно сделать запрет на ноль

может уже выложите все пожелания-ограничения, а то напоминает сказку про золотую рыбку)
Вангую: следующим будет ограничение на отрицательные числа, угадал?
Цитата BlackJek, 06.06.2017 в 15:09, в сообщении № 18 ( писал(а)):
нажимаем "DELETE" выскакивает ошибка
поправил
К сообщению приложен файл: 9767198.xls (73.5 Kb)


Яндекс: 410016850021169
 
Ответить
Сообщение
Цитата BlackJek, 06.06.2017 в 15:09, в сообщении № 18 ( писал(а)):
Хотелось добавить - а можно сделать запрет на ноль

может уже выложите все пожелания-ограничения, а то напоминает сказку про золотую рыбку)
Вангую: следующим будет ограничение на отрицательные числа, угадал?
Цитата BlackJek, 06.06.2017 в 15:09, в сообщении № 18 ( писал(а)):
нажимаем "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
  • Страница 1 из 1
  • 1
Поиск:

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