Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как в макросе задать условие "если ошибка" - #ЗНАЧ!
 
Дмитрий, все равно выдает ошибку "13"
Код
Sub test3()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To LastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
'        If IsError(Cells(i, 6).Value) Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrNA) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrValue) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrValue) Then Cells(i, 7).Value = 15
'        If IsError(ActiveCell.Value) Then Cells(i, 7).Value = 15
'    If Cells(i, 5).Value <> "" Then
'    If Cells(i, 6).Value = CVErr(xlErrNA) Then
'    Cells(i, 7).Value = 15
'    End If
'    End If
    
    Next i
End Sub
Пробую разные варианты - выдает одну и туже ошибку "13" - может я синтаксис неверно пишу?
Не может быть, чтобы все предложенные варианты приводили к одной ошибке.
Что я не правильно делаю? Не читаете правила форума.
Рисунки удалены: превышение допустимого размера вложения
Кнопка для оформления кода в сообщении - <...>
[МОДЕРАТОР]
Изменено: se_arts - 13.03.2018 22:47:07
Как в макросе задать условие "если ошибка" - #ЗНАЧ!
 
Скрытый текст
Код
Sub test3()
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
        If Cells(i, 6).Value = CVErr(xlErrNA) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
    Next i
End Sub

Выдает ошибку:
Run-time error '13':
Type mismatch
Изменено: se_arts - 13.03.2018 22:48:11
Как в макросе задать условие "если ошибка" - #ЗНАЧ!
 
Подскажите, пожалуйста, как правильно задается условие "если ошибка"
Мне необходимо указать ошибку: #ЗНАЧ!
Код
Sub test3()
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
'        If Cells(i, 6).Value = "#ЗНАЧ!" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = Error And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = "#Error" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = "#N/A" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15      
    Next i
End Sub
Вставка данных в строку при помощи макроса
 
Добрый день.
Подскажите, как можно при помощи макроса вставить строку со значениями (исходными данными).

Вариант1: На листе "1" строки 16 и 17 - встречается первый пропуск последовательных чисел (столбец С) - пропущено значение 14. Мне необходимо вставить строку между 16 и 17 строчками. И вычислить число, которое пропущено по колонке С. Здесь число 14. На листе "2" - как должно выглядеть после работы макроса (строка 17). Здесь я сделал вручную. Как сделать при помощи автомата: на строку с красным установить курсор, нажать кнопку с макросом - вставляется строка (в данном случае строка 17 лист "2"). № х
вычисляем как: в столбце С переходим на 1 строку выше от вставленной строки и берем значение столбца С(х)+1. В данном случае: строка 13, значение в столбце С =13   +1   =14.
вставляем строку
Код
=СЦЕПИТЬ("<tr><td></td><td class=t1><p><b><font color='#CC00CC'>№ ";C16+1;" - отсутствует</font></b></td><td></td></tr>";)
С16+1 - значение для конкретного примера, должно вычисляться в виде С(х)+1, где х - это строка на 1 выше, чем куда будет установлен курсор

итоговый вариант
Код
<tr><td></td><td    class=t1><p><b><font color='#CC00CC'>№ 14 -    отсутствует</font></b></td><td></td></tr>

Вариант2: На листе "1" строки 24 и 25 - пропущены значения с 23 по 27 (столбец С). Между 24 и 25 строками нужно вставить строку
Код
<tr><td></td><td    class=t1><p><b><font color='#CC00CC'>№№ 23-27 -    отсутствуют</font></b></td><td></td></tr>
На листе "2" как должен выглядеть правильны вариант: строки 25-27.
Для этого варианта: лист "1" между строками 24 и 25 вставляем строку
Код
=СЦЕПИТЬ("<tr><td></td><td class=t1><p><b><font color='#CC00CC'>№№ ";C25+1;"-";C27-1;" - отсутствуют</font></b></td><td></td></tr>";)

отсутствующие номера найти как: от вставленной строки подняться на 1 строку выше и в столбце С взять значение +1 (здесь строка 25, значение 22+1) и опуститься на 1 строку ниже вставленной строки в столбце С взять значение -1 (здесь: строка 27, значение 28-1), чтобы получить №№ 23-27 - отсутствуют. Здесь С25+1 и С27-1 (я указал конкретные ячейки), а мне нужно, чтобы в формуле было С(х)+1 и С(х)-1, т.е. указывались значения на строку выше и ниже от вставленной строки, где х - случайная строка.

В этих двух примерах я взял конкретные значения, а мне нужно, чтобы считалось автоматом для любой строки.


Возможно есть намного проще вариант решения моей проблемы? буду рад любому решению.
Заранее всем спасибо.
Не вычисляется длина строки, заданная условиями
 
добрый день, Z
Возможно есть вариант, при котором не нужно будет использовать дополнительную ячейку и делать двумя формулами, а сделать все в одну формулу. Это не обязательно (на данный момент длинный способ работает), но было бы интересно узнать и такой метод.  
Не вычисляется длина строки, заданная условиями
 
Добрый день.
_Igor_61 спасибо за пояснения.
Решил вопрос так: нахожу нужную строку  "700" или "222" или др. Помещаю ее в др ячейку, а уже зная конкретное размещение - в формуле напрямую задаю данную ячейку и вычисляю правильную длину символов.
Если кто-то знает более простое решение - буду рад узнать более быстрое и более правильное решение моей проблемы.
Не вычисляется длина строки, заданная условиями
 
Добрый день.

Мне необходимо находить последовательность символов в строке (начало,  центр строки или окончание), (пример: все, что входит в $b, $g или др ).  Длина строки бывает доходит до 400-600 символов.

Ячейки С15,С16 - если указывать ячейку на прямую (ячейка А6) - длина  вычисляется правильно, если использовать поиск строки из массива строк  (ищу строку, которая начинается на "700"), то длина строки не  вычисляется, выдает ошибку.

Ячейки С23,С24,C25 и  С26,C27 и С28,С29 - не могу понять, почему не  вычисляется полная длина. Если количество символов не большое, то  вычисляется правильно (С23,С24,C25,C28), если длину строки увеличить -  выдает ошибки (С26,C27,C29).
Вычисление идет в строках, начинающихся на 200 и 222. В 222 текст полный  (я ничего не удалял) - здесь выдает ошибки, а в 220 удалил часть текста  - в этом случае формулы начали работать.

Подскажите, как вычислить полную длину строки в заданных пределах? Строки, начало на "700" и "222".
необходимо найти строку по искомому значению и взять из найденной строки текст
 
Добрый день.
Появились вопросы с которыми сам не могу справиться.

Вопрос 1:
есть поле "200". Пример:
2001#$aМеханизмы влияния некоторых полисахаридных препаратов на скорость заживления ран в эксперименте $eавтореферат диссертации на соискание ученой степени кандидата медицинских наук $e14.00.16 $fШнейдер Александр Болеславович $gМинистерство высшего и среднего специального образования СССР, Университет дружбы народов им. П. Лумумбы

Необходимо извлечь название "$a", в данном случае: Механизмы влияния некоторых полисахаридных препаратов на скорость заживления ран в эксперименте.
Учебное заведение "$g", в данном случае:Министерство высшего и среднего специального образования СССР, Университет дружбы народов им. П. Лумумбы

формулы вычисления "$a"
Код
=ПСТР(ВПР("200*";$A$40:$A$280;1;0);ПОИСК("$a";ВПР("200*";$A$40:$A$280;1;0))+2;ПОИСК("$e";ВПР("200*";$A$40:$A$280;1;0))-2-ПОИСК("$a";ВПР("200*";$A$40:$A$280;1;0)))
Ответ получаю в виде #Н/Д

формулы вычисления "$g"
Код
=ПСТР(ВПР("200*";$A$40:$A$280;1;0);ПОИСК("$g";ВПР("200*";$A$40:$A$280;1;0))+2;ПОИСК("$g";ВПР("200*";$A$40:$A$280;1;0))-2)
Ответ получаю в виде #Н/Д

В обоих случаях искомое значение слишком длинное, если укоротить, то ответ находится правильно (укороченный вариант). При поиске названия необходимо уменьшить длину строки и "$a" и "$e", тогда работает.
Подскажите, что можно сделать, чтобы он считал всю длину строки (символов 300) ?

Вопрос 2:
есть поле 899 и его разновидности (те, которые смог найти, но не уверен, что нашел все), подполе "$b"=039,043,063,055. Подполе "$j"=11,15.
Пример:
899##$aBY-HM0000 $b039 $j11:4:2:67 $p21778/86
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369
899##$aBY-HM0000 $b043 $j15:4:4:22 $pБа204698
899##$aBY-HM0000 $b063 $j11:4:2:66 $pАЯ510331
899##$aBY-HM0000 $b063 $j15:4:2:66 $pАЯ510331
899##$aBY-HM0000 $b055 $p##2Н//317030(055)

Часть данных из существующей записи: есть короткое и длинное поле.
899##$aBY-HM0000 $pБа199007
899##$aBY-HM0000 $pБа199008
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199007
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369
899##$aBY-HM0000 $b055 $p##2Н//317030(055)
Мне необходимо найти все значения "$p" в длинных строках.
Длинную строку можно определять как "899*$j*", т.е. добавляю подполе "$j". В данной случае сразу отсекаются короткие записи (с них нет подполя "$j") и отсекается строка вида: 899##$aBY-HM0000 $b055 $p##2Н//317030(055). Здесь в поле "$p" стоят символы "##". Такое поле "899" где есть ($b055 $p##) также, как и короткое поле не должны учавствовать в выборке.
Т.е. остаются поля "899":
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199007
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199008
899##$aBY-HM0000 $b043 $j11:4:2:66 $pАЯ510369

Мне необходимо, чтобы выводился ответ: Ба199007, БА199008, АЯ510369.
Формула для подсчета 2-х значений:
Код
=ПСТР(ВПР("899*$j*";$A$40:$A$280;1;0);ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))+2;ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))-2)&","&ПСТР(ВПР("899*$j*";$A$40:$A$280;1;0);ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))+2;ПОИСК("$p";ВПР("899*$j*";$A$40:$A$280;1;0))-2)

По данной формуле ответ получается Ба199007, Ба199007. Т.е. он все время находит первую строку.
Как сделать, чтобы он просматривал все строки с полями "899*$j*" ?

вот еще пример из исходников
899##$aBY-HM0000 $pБа199492
899##$aBY-HM0000 $pБА199493
899##$aBY-HM0000 $b039 $j11:4:2:66 $pАЯ514349
899##$aBY-HM0000 $b039 $j11:4:2:66 $pАЯ516431
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБа199492
899##$aBY-HM0000 $b039 $j15:4:4:21 $pБА199493
899##$aBY-HM0000 $b055 $p##2Н//238201(055)
Здесь ответ: АЯ514349, АЯ516431, Ба199492, БА199493.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
АlехМ, спасибо, формула работает.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
Добрый день.
Мне необходимо заменить "/" на "_" или "//" на "_"
С одной заменой: =ПОДСТАВИТЬ(A1;"/";"_")  или =ПОДСТАВИТЬ(A1;"//";"_") .
Подскажите, как правильно написать формулу, чтобы она учитывала 2 варианта замены? т.е. определяла "/"
или "//" и выводила "_". И чтобы при "//" не получалось "__".

Можно формулой, можно макросом.
Заранее всем спасибо.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
АlехМ,спасибо за Ваш вариант, формула работает.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
Михаил С.,огромное спасибо, все работает
необходимо найти строку по искомому значению и взять из найденной строки текст
 
Извините, не понял Ваш вопрос.

Файл прикрепил
необходимо найти строку по искомому значению и взять из найденной строки текст
 
vikttur, очень надеюсь, что других вариантов не найду.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
6060#$3BY-NLB-ar3725   $aБЕЛОРУССКИЙ ЯЗЫК $2DVNLB
6060#$3BY-NLB-ar28089 $aРЕМЁСЛА $2DVNLB
607##$3BY-NLB-ar42135 $aБеларусь
700#1$3BY-SEK-414771 $aКніга $bУ. Д.   $gУладзімір Дзмітрыевіч $cкандыдат філалагічных навук
801#0$aBY $bBY-HM0000 $c19971031 $gpsbo
899##$aBY-HM0000 $p26Ад698
Столкнулся с проблемой. после значения "700" располагаются знаки и символы, а $a $b $c идут не по порядку. Мне необходимо получить только ФИО ($a и $g), остальное не включать в выборку.

Формула
Код
=ПСТР(A46;ПОИСК("$a";A46)+2;ПОИСК("$b";A46)-2-ПОИСК("$a";A46))&ПСТР(A46;ПОИСК("$g";A46)+2;ПОИСК("$c";A46)-2-ПОИСК("$g";A46))
находит: Кніга Уладзімір Дзмітрыевіч, но здесь все привязано к конкретной строке (строка 46).
Формула
Код
=ПРОСМОТР(2;1/(ЛЕВБ($A$3:$A$174;3)="700");$A$3:$A$174)
находит 700 строку (в которой) нужно сделать выборку.

Как объединить эти две формулы?
Или есть более простой способ найти 700 строку и достать ФИО (в данном случае  Кніга Уладзімір Дзмітрыевіч)
необходимо найти строку по искомому значению и взять из найденной строки текст
 
gling,формулу дает нормально вставить, но вместо результата показывает #ЗНАЧ!
vikttur, формула работает, все корректно отображает
если отчество добавить
500$aПушкин   $bАлександр $cСергеевич
тогда формула  
Код
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПРОСМОТР(2;1/(ЛЕВБ(A4:A9;3)="500");A4:A9);"500$a";);"$b";);"$c";) 
всем спасибо за помощь.
необходимо найти строку по искомому значению и взять из найденной строки текст
 
формула выдает ошибку - несоответствие скобок, если подставить скобку в самом конце, пишет - слишком мало аргументов.
Что означает зеленый квадрат с вопросом? Что-то не корректно отобразилось?

Все данные перечисляются через $a $b $c $d и т.д. переменных может быть от 1 до 8, т.е ФИО (1,2,3), 4-писатель, 5-годы жизни, 6-титулы, звания, награды, ученые степени или др.
Подскажите для начинающего в экселе: что означает -- перед ЛЕВСИМВ или где можно прочитать?
необходимо найти строку по искомому значению и взять из найденной строки текст
 
Помогите, пожалуйста, решить задачу.

Задача: в первом столбце есть набор строк. Количество строк случайное (может быть 12, может быть 40). Каждая строка начинается с определенного кода (3 цифры).
Нужно найти строку, которая начинается на "500" и взять из нее текст Пушкин Александр (вставить во второй столбец).

Заранее спасибо.

Пушкин Александр
505fdgbdfhbe
123dgrebrebrebe
500$aПушкин $bАлександр
432gdfnhtrjntr
433bfdbnbre
501vbdfbetnretnr
Как в функции ПОИСК указать любое число (0-9), Как в функции ПОИСК указать любое число (0-9)
 
Спасибо, огромное.
Как в функции ПОИСК указать любое число (0-9), Как в функции ПОИСК указать любое число (0-9)
 
Есть запись, которая содержит название населенных пунктов и цифры. Необходимо разделить на 2 столбца. В первый - название. Во второй - цифры.
впау Вуц, ыва 3910, 516028 819 374впау Вуц, ыва3910, 516028 819 374
В прикрепленном файле есть образцы - что нужно получить в конечном итоге.
Также есть попытка решения данного задания. Я научился разделять по конкретно заданной цифре (к примеру цифра 3 или 4 или 9). Мне необходимо, чтобы функция поиск находила первыю встречающуюся цифру (0-9), брала остальной массив цифр и переносила в столбец.
Возможно, я совсем не правильно решаю. Подскажите, пожалуйста, как правильно выполнить такое задание.
Спасибо.
Страницы: 1
Наверх