Найти строку в ячейке с помощью VBA
Я сводил меня с ума этим целый день, искал все выше и ниже, и, вероятно, я пытаюсь быть слишком милым, поэтому я полностью застрял.
Я пытаюсь запустить простой, если тогда
Если ячейка содержит «%» Мне бы хотелось сделать одно, а если нет, то другое. По причинам, которые я не понимаю, я не могу заставить его работать. Я явно взял пару идей из других мест, но все еще не могу заставить их работать.
Сложные факторы - я не хочу запускать это для всего столбца, только для таблицы, поэтому он встроен в большую подпрограмму с использованием лотов или относительных ActiveCells. Я никогда не знаю, где в столбце «А» я столкнусь с & quot;% Change & quot; поэтому диапазон всегда должен быть переменным. Я хочу, чтобы VBA / VBE делал что-то другое, когда сталкивался с ячейкой с & quot;% & quot; в этом. ТАК
Вот как выглядят необработанные данные
Initial Value (6/30/06)
Value (12/31/06)
Net Additions (9/30/07)
Withdrawal (12/07)
Value (12/31/07)
Withdrawal (2008)
Value (12/31/08)
Addition (8/26/09)
Value (12/31/09)
Value (12/31/10)
Value (12/30/11)
Value (3/31/12)
% Change 1st Quarter
% Change Since Inception
Но когда я запускаю следующее, он застревает в плохом цикле, где он должен был вытолкнуть в «Если тогда» в отличие от «остального» часть саб.
Sub IfTest()
'This should split the information in a table up into cells
Dim Splitter() As String
Dim LenValue As Integer 'Gives the number of characters in date string
Dim LeftValue As Integer 'One less than the LenValue to drop the ")"
Dim rng As Range, cell As Range
Set rng = ActiveCell
Do While ActiveCell.Value <> Empty
If InStr(rng, "%") = True Then
ActiveCell.Offset(0, 0).Select
Splitter = Split(ActiveCell.Value, "% Change")
ActiveCell.Offset(0, 10).Select
ActiveCell.Value = Splitter(1)
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = "% Change"
ActiveCell.Offset(1, -9).Select
Else
ActiveCell.Offset(0, 0).Select
Splitter = Split(ActiveCell.Value, "(")
ActiveCell.Offset(0, 9).Select
ActiveCell.Value = Splitter(0)
ActiveCell.Offset(0, 1).Select
LenValue = Len(Splitter(1))
LeftValue = LenValue - 1
ActiveCell.Value = Left(Splitter(1), LeftValue)
ActiveCell.Offset(1, -10).Select
End If
Loop
End Sub
Спасибо за помощь, спасибо!