2016-10-28 3 views
-2

Мне нужна помощь в правильном форматировании и структуре для использования оператора IF в VBA, чтобы заставить его записывать определенные числа и значения в самой ячейке.Использование инструкций или команд «If» в VBA

У меня есть опыт ZERO в кодировании, в любой форме, поэтому моя формулировка выше может быть бессмысленной. Поэтому я просто объясню немного больше, что мне нужно.

Мне нужно присвоить графы на основе процентов, используя макрос, который будет работать по одной строке за раз. Поэтому, если% равно 73,5, мне нужно, чтобы ячейка рядом с ней читала «С», когда я использую ярлык клавиатуры, который я назначаю в макросе, и работаю независимо от того, что%. Я знаю, что нужно использовать «If Then// ELSEIF» формат, но я просто не могу понять, как правильно впечатать команду

+4

Это не является учебным сайтом, и мы не являемся сервисом написания кода. Вы можете найти любое количество учебных пособий VBA, и здесь есть много существующих сообщений, связанных с VBA, которые продемонстрируют правильное использование IF ELSE. –

+0

Для этого вам не нужен VBA. Кое-что вроде '= IF (D2> 99,« A », IF (D2 <60,« F », CHAR (75- (D2 + 1)/10)))' должно быть достаточным. – Comintern

+1

Первый поиск вернулся, когда я Google [if then else vba] (https://msdn.microsoft.com/en-us/library/752y8abs.aspx). Первый поиск возвращался, когда я Google [if then else excel formula] (https://www.techonthenet.com/excel/formulas/if_nested.php) кажется учебным пособием. :/ – Tyeler

ответ

-2

Вам нужно несколько вещей здесь

  1. цикл для перебирать свои клетки, которые вы будете испытывать
  2. Условный или сазе принять решение

Это будет выглядеть примерно так:

For Each testCell in Sheets("Sheet1").Range("A1:A20").Cells 
    If testCell.value > .70 AND testCell.value < .80 Then 
     testCell.Offset(,1).value = "C" 
    ElseIf testCell.value > .60 AND testCell.value < .70 Then 
     testCell.Offset(,1).value = "D" 
    <and on and on to capture each of your potential grades> 
    End IF 
Next testCell 

То, что testCell является переменной, которой присваивается значение каждой ячейки в диапазоне Sheets("Sheet1").Range("A1:A20"). One cell at a time, 20 times total as it loops. Each time it is tested by the IF statement and a value is written out in the cell one column over using the Смещение (, 1) `.

Возможно, вам будет проще использовать Index() и Match для управления этим, чтобы вам не было обезьяны с vba. Чтобы сделать это, сделать таблицу в другом листе (Лист2) что-то вроде:

enter image description here

А потом, предполагается, что ваш номер класса в A1, вы можете использовать следующую формулу:

=INDEX(Sheet2!$B$1:$B$5,MATCH(A1, Sheet2!$A$1:$A$5,1)) 
Смежные вопросы