Формула в VBA для всех строк выше указанного значения - PullRequest
0 голосов
/ 07 января 2019

У меня есть вопрос о том, как применить и повторить формулу для всех значений в столбце над определенной переменной.

У меня есть большой лист Excel со многими образцами, их температурными диапазонами (в C) в Time1 и Time2 и их расположением.

  1. Образец A 54 80 Снаружи
  2. Образец A 50 81 Внутри
  3. Образец B 48 80 Внутри
  4. Образец B 52 74 Снаружи
  5. Образец B 53 78 Снаружи
  6. Образец C 55 80 Лабораторные условия
  7. Образец C 50 76 Внутри
  8. SampleD 48 77 Морозильная камера
  9. SampleD 51 76 Морозильная камера
  10. SampleD 52 75 Негабарит
  11. SampleD 53 80 Лабораторные условия

Я работаю над сценарием, который бы понимал, когда заканчивается SampleA и начинается SampleB и далее, вычисляет разницу между двумя температурными диапазонами для каждого образца и дает процентное соотношение для образца местоположения. Например, процентное соотношение местоположения образца D должно составлять 50% в морозильной камере, 25% снаружи и 25% в лабораторных условиях.

С помощью других на этом сайте у меня есть пробный код для аренды, разделяющий различные образцы. Спасибо, @DisplayName. Чтобы просто отметить изменение в примере, я поместил «Привет» в столбце. Я также знаком с FillDown, но что можно остановить на определенной переменной, чтобы вернуться к началу?

`Sub FormulasNoLoops()
    With Worksheets("Sheet1")
      With .Range("A2", .Cells(.Rows.Count, "A").End(xlUp)).Offset(, 15)
         .Formula = "=IF(A2<>A3,""hello"","""")"
         .Value = .Value
       End With
     End With
 With Worksheets("Sheet1")
      With .Range("B2:C2", .Cells(.Rows.Count, "B:C").End(xlUp)).Offset(, 16)
         .Formula = "=IF(""=C2-B2"","""")"
         .Value = .Value
       End With
     End With
End Sub`

В следующем столбце, столбец 16, я хотел бы рассчитать разницу между столбцом C и столбцом B. Я неправильно пишу команду With .Range("B2:C2", .Cells(.Rows.Count, "B:C").End(xlUp)).Offset(, 16).

  1. Образец A 54 80 Снаружи Разница между температурой2 и температурой1
  2. Образец A 50 81 Внутри Hello Разница между температурой2 и температурой1
  3. ОбразецB 48 80 Внутри Разница между температурой2 и температурой1
  4. ОбразецB 52 74 Снаружи Разница между температурой2 и температурой1
  5. Образец B 53 78 Снаружи Привет Разница между температурой2 и температурой1
  6. Образец C 55 80 Лабораторные условия Разница между температурой2 и температурой1
  7. Образец C 50 76 Внутри Hello Разница между температурой2 и температурой1
  8. SampleD 48 77 Морозильная камера Разница между температурой2 и температурой1
  9. SampleD 51 76 Морозильная камера Разница между температурой2 и температурой1
  10. SampleD 52 75 Негабарит Разница между температурой2 и температурой1
  11. SampleD 53 80 Лабораторные условия Разница между температурой2 и температурой1

Пример желаемого результата с SampleD: Example of workflow for SampleD

1 Ответ

0 голосов
/ 08 января 2019

Вы можете достичь желаемого решения с помощью формулы SUMIF. Я объясняю это в 2 шагах со скриншотами и надеюсь, что это поможет вам как новичку в Excel, Formula и VBA.

Мы будем использовать следующую формулу IN Cell E2 и FillDown:

=IFERROR((SUMIFS(C:C,A:A,A2,D:D,D2) -SUMIFS(B:B,A:A,A2,D:D,D2))/(SUMIFS(C:C,A:A,A2)-SUMIFS(B:B,A:A,A2)),"-")

для расчета разницы температур во времени в разных местах образца и отображения в процентах.

SUMIF Excel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...