sokol92, можете пояснить ваш вариант? Статья по ссылке сейчас недоступна 

28.03.2013 22:27:21
Там в исходном массиве есть "", с ними СУММПРОИЗВ не работает.
Да и ошибка появляется уже в случае, если 2ю и 3ю строчки посчитать одновременно (не делить на 2 шага). Если честно, то от Экселя уже уехала, но, скорее всего, как альтернативу можно попробовать заставить работать вот такой пример:
По логике, ответ должен быть "4". Проверить, правда, пока не могу :'( |
|||
|
28.03.2013 21:18:01
Всем привет,
Такой вопрос: Есть формула:
Если считать ее последовательно (с помощью F9 по строкам 3, 3+4,5,6, 5+6, потом со 2й до конца, потом с 1й до конца), получается нормальный ответ. А так Excel выдает ошибку #ЗНАЧ! В исходнике заменить "" на нули не могу - он не мой, его трогать нельзя. Есть способ помочь моему горю? П.С. Ниже - шаги.
Изменено: |
|||||||||||||||||
|
17.09.2010 16:23:21
{quote}{login=Казанский}{date=17.09.2010 04:02}{thema=}{post}Код можно упростить:
Sub Calc_1() ' Dim Cell As Range For Each Cell In Selection Cell.Offset(21, 0).GoalSeek Goal:=0, ChangingCell:=Cell Next ' End Sub А ошибка может быть потому, что ячейка, к которой применяется метод, не зависит от ячейки, указанной в ChangingCell.{/post}{/quote} Ячейки зависят. Ошибка в коде. Это точно, потому что Ваш код - работает. Хотелось бы понять, в чем разница. А такой вариант: Sub Calc_4() ' Dim Cell As Range For Each Cell In Selection Cells(Cell.Row + 21, Cell.Column).GoalSeek Goal:=0, ChangingCell:=Cells(Cell.Row, Cell.Column) Next ' End Sub С предложенным: {quote}{login=The_Prist}{date=17.09.2010 03:51}{thema=}{post} Cells(Cell.Row + 21, Cell.Column).GoalSeek Goal:=0, ChangingCell:=Cells(Cell.Row, Cell.Column){/post}{/quote} Не работает вообще. Та же Error 1004, но с примечанием "неверная ссылка". |
|
|
17.09.2010 15:31:10
Всем привет,
Нужно подобрать параметр для ряда ячеек. Пишу: Sub Calc_1() ' Dim Cell As Range For Each Cell In Selection Range(Cells(Cell.Row + 21, Cell.Column)).GoalSeek Goal:=0, ChangingCell:=Range(Cells(Cell.Row, Cell.Column)) Next ' End Sub Выдает ошибку 1004: Method 'Range' of object '_Global' failed Почему? Что исправить? |
|
|
13.09.2010 10:43:47
В общем, у меня самой получилось так:
Sub Insert_Row() ' ' Dim BaseSht As String Dim CurrentSht As String ' BaseSht = "Лист1" CurrentSht = ActiveSheet.Name ' ' Dim Row As Integer Row = Selection.Row Dim Column As Integer Column = Selection.Column ' ' If Column <> 1 Then MsgBox "Установите курсор на идентификаторе!" GoTo EndSub End If ' ' Dim FinalRow As Integer FinalRow = Row + Selection.Rows.Count - 1 ' ' For i = Row To FinalRow ' ' Dim A As String Dim B As String Dim C As String Dim D As String Dim E As String ' A = Worksheets(CurrentSht).Cells(i, Column).Value B = Worksheets(CurrentSht).Cells(i, Column + 1).Value C = Worksheets(CurrentSht).Cells(i, Column + 2).Value D = Worksheets(CurrentSht).Cells(i, Column + 3).Value E = Worksheets(CurrentSht).Cells(i, Column + 4).Value ' With ActiveWorkbook.Worksheets(BaseSht) Set rFndRng = .UsedRange.Find(A) If rFndRng Is Nothing Then Set rFndRng = .UsedRange.Find(B) If rFndRng Is Nothing Then MsgBox ("Раздел " & B & " не найден. Создайте раздел " & B & "!") Else Dim rFndRngRow As Integer rFndRngRow = rFndRng.Row .Cells(rFndRngRow + 1, 1).EntireRow.Insert .Rows(rFndRngRow + 1).FillDown .Cells(rFndRngRow + 1, 3) = C .Cells(rFndRngRow + 1, 4) = D .Cells(rFndRngRow + 1, 5) = E ' Dim F As String F = .Cells(rFndRngRow + 1, 6).Value .Range("Template").Find(F).EntireRow.Copy .Cells(rFndRngRow + 1, 1).PasteSpecial xlPasteFormats, xlNone, False, False End If End If End With Next i ' EndSub: End Sub |
|
|
07.09.2010 15:11:44
{quote}{login=гость}{date=07.09.2010 02:35}{thema=Re: }{post}Вопросы:
а) что делать, если в столбце В Листа1 значения ячейки В1 Листа2 - не найти? в) т.е. если не формулы - то вообще ничего не копировать?{/post}{/quote} Ответы: 1. Спасибо, пока не сталкивалась с ситуацией, что значения В1 не было, поэтому не подумала, что делать. Наверное, проще всего сказать пользователю: Создай раздел "В1". 2. Как правило, формул нет только в столбцах С, D, E, в которые и переносятся данные с Листа2. Если не формулы - ничего не копировать. Можно написать "ВНИМАНИЕ", но это уже роскошь :) |
|
|
07.09.2010 13:10:09
Всем привет.
Имеются два листа. 1. Выделяем на Листе2 диапазон, скажем, A1:A5, строки всегда меняются, столбец всегда А 1. Надо проверить, содержится ли в столбце A Листа1 значения ячейки A1 Листа2. 2. Если да - перейти к следующей ячейке выделенного диапазона. 3. Если нет, то: а) найти в столбце В Листа1 значения ячейки В1 Листа2, б) добавить строку ниже найденной ячейки в) скопировать в нее формулы из строки выше (очень желательно только формулы, а ячейки со значениями - не копировать), г) в ячейки столбцов С, D, E новой строки Листа1 откопировать значения из ячеек С1, D1, E1 Листа2 (при переходе к ячейке А2 - из ячеек С2, D2, E2 соответственно и т.д.) 4. Проделать со всеми ячейками выделенного диапазона. Нужна помощь :-[ |
|
|
22.07.2010 12:12:35
{quote}{login=KuklP}{date=22.07.2010 10:44}{thema=}{post}Дык, автор пишет: "Не лучший вариант, потому что я использую "MyDate" не только здесь. И она мне нужна как дата." Значит все же дата?
Warbler, Вы бы выложили пример, где не ищет, давно бы получили ответ. А так мы гадаем здесь гурьбой, чего Вам нужно.{/post}{/quote} Все вижу, все читаю, не успеваю пробовать :-[ Файл выложу, просто "как есть" его выложить не могу, нужно некоторое время на переделку. |
|
|
21.07.2010 19:49:44
Всем привет!
Задача: надо, чтобы максрос находил заданную дату на листе Rак не работает: Sub Dim MyDate As Date MyDate = ActiveCell.Offset(0, -2).Value Windows("File.xls").Activate Sheets("Sheet1").Select Cells.Find(MyDate).Activate End Sub То же, но с четко указанной датой работает: Sub Windows("File.xls").Activate Sheets("Sheet1").Select Cells.Find("11.12.2010").Activate End Sub Хелп! Буду крайне признательна :) |
|
|