Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Заполнение диапазона с элементами логики


Автор: Displey 19.8.2005, 11:24
Доброе время суток!
У меня возникла такая проблема, поэтому и решился обратится к людям более знающим.
Мне нужно чтобы в диапазоне А2:А25 отржались значения в зависимости от того что написано в ячейке А1
Например А1= 1, тогда А2=х1, А3=х3,А4=х5 и если А1 = 2 тогда А2=н1 ,А3=н3, А4=н5. Проблема в том что диапазон немаленький и простыми экзелевскими формулами если комп грузить нехочется ((

Автор: Akina 19.8.2005, 12:18
Сделай модуль. Напиши в нем функцию. Типа:

Код

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Dim i As Integer
Dim Predicat As String
   If Sh.Name = "Лист1" Then
      If ((Source.Column = 1) AND (Source.Row = 1)) Then
         Select Case WorkSheets("Лист1").Range("A1").Value
            Case 1
               Predicat = "х"
            Case 2
               Predicat = "н"
            Case Else
               Exit Sub
         End Select
         For i = 2 to 25
            WorkSheets("Лист1").Range("A" & Trim(Str(i))).Value = Predicat & Trim(Str(i * 2 - 3))
         Next
      End If
   End If
End Sub


Правильность проверяй сам - писАл на коленке. То же касательно оптимизации.

Автор: Displey 19.8.2005, 14:22
Мне надо что-то вроде этого.

Чтобы когда СТ-001 то в определенной ячейке 50, если СТ-002 то 150 и т.д. выходило и так во всех ячейках . Критерием для условия служит строка № 4 и 6 взависимости какое там значение будет выбрано из списка в ячейке должно быть выведена цифра соотвествующая этим критериям .

Автор: Akina 19.8.2005, 15:40
Displey
да какая разница? принцип от этого не меняется.

Автор: Displey 19.8.2005, 16:28
Akina
Дело в том что это макрос который проверит значение одной ячейки. а мне надо во всю таблицу . Там ячеек около 40-50 .
Конкретно говоря следущее:
1.Проверяет значение А1=Х? А2=Х1 если да то в ячейке А3 должно написатся 150 , если А1=Н1 и А2= Х1, то в ячейкее должно написатся 250. потом далее идет В1 и В2 , С и С2 .
Скорее всего сюда нужна персональная функция, но вот ее и не могу додумать (((

Автор: Akina 19.8.2005, 16:31
Displey
Ты чего, издеваешься? вместо
Код
Select Case WorkSheets("Лист1").Range("A1").Value
пишешь
Код
a=WorkSheets("Лист1").Range("A1").Value
b=WorkSheets("Лист1").Range("A2").Value
if a=1 and b=1 then
...
elseif a+b>5 then
   if a<3 then
   ...
   endif
...
elseif
.....
endif

Автор: Displey 19.8.2005, 21:58
Akina
Нет я неиздеваюсь, просто от меня требуют то чего я незнаю, вот я и немогу точно сформулировать скорее свой вопрос (( Придется искать учебники для начинающих по VBA чтобы хоть толком понять что в скрипте написано , а не тупо скопировав работать. ((

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)