#excel #vba
Вопрос:
Чего я пытаюсь добиться, так это:
- Если ячейки в столбце F содержат число, преобразуйте его в проценты
- Если ячейки в столбце F пусты, а соответствующая ячейка в столбце G содержит 0, то запишите в ячейку в столбце F «-«
- Если ячейки в столбце F не содержат числа, а соответствующая ячейка в столбце G содержит число, превышающее 0, то запишите в ячейку в столбце F «Требуемое действие»
Столбец G форматируется как число.
Однако с данным кодом все становится «-«. В чем же фокус?
Sub Replace()
Dim ws As Worksheet, dataLastRow As Long, cell As Range, MyRng As Range
Set ws = ThisWorkbook.Worksheets("MyTab")
Application.ScreenUpdating = False
dataLastRow = ws.Range("F" amp; Rows.Count).End(xlUp).Row
Set MyRng = ws.Range("F2:F" amp; dataLastRow)
' Loop through column F
For Each cell In MyRng
If cell = "" And cell.Offset(0, 1) = 0 Then
cell = "-"
ElseIf cell = "" And cell.Offset(0, 1) > 0 Then
cell = "Action Required"
ElseIf cell >= 0 Then
With MyRng
.NumberFormat = "0.00%"
.Value = .Value
End With
Else
End If
Next cell
Application.ScreenUpdating = True
End Sub
Комментарии:
1. Должна ли ваша процентная ветвь форматировать ячейку, а не myrng? Можете ли вы показать некоторые исходные данные ?
Ответ №1:
Ваш вопрос выглядит странно: вы получаете список данных, вам нужно обобщить эти данные, и вместо того, чтобы поместить резюме в другую колонку, вы решаете перезаписать свои данные своим резюме.
На случай, если вы передумаете, я написал эту формулу, которая создает резюме (не совсем правильно, необходимо внести некоторые небольшие изменения).:
=IF(AND(ISBLANK(F1),G1=0),"-",IF(ISNUMBER(F1),F1,"Action required"))
(О, в случае, если вы используете формулу, не забудьте изменить формат ячейки в процентах.)