나는 하루 동안 이걸로 화를 냈고, 높거나 낮게 검색했고, 아마도 너무 귀여워 져서 완전히 붙어 있습니다. 하지 다른 경우 VBA를 사용하여 셀 내에서 문자열 찾기
나는 셀이 포함되어있는 경우 다음는 "%는"나는 한 일을하려는 경우 간단한을 실행하려고하고 있어요. 나는 그것을 이해할 수없는 이유로 그것을 해결할 수 없습니다. 나는 분명히 다른 곳에서 몇 가지 아이디어를 얻었지만 여전히 작동시킬 수는 없다.
복잡한 요소 - 전체 열, 단지 테이블에서이를 실행하지 않으므로 로트 또는 상대 ActiveCell을 사용하는 더 큰 하위에 포함됩니다. Range가 항상 가변적이어야하므로 A 열에서 "% Change"를 실행할 곳을 알 수 없습니다. VBA/VBE가 "%"가 포함 된 셀에 대해 다른 작업을 수행하기를 원합니다. SO
다음는 원시 데이터가
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
처럼 보인다하지만 실행할 때 "그것이 반대로 그것이"그럼이 "로 꺼내해야 나쁜 루프에 걸리면 다음과 같은 것입니다 Else "하위의 일부.
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
감사합니다.
이것은 내가 놓친 퍼즐의 간단한 조각입니다. 나는 여전히 상대적으로 새로운 오전 그래서 if (if 아마도 알 수없는 :) if 함수 내에서 rng.offset을 설정할 수있는 능력에 대해 생각하지 않았다. 그것은 위대하고 매우 도움이됩니다. 또한 InStr 함수에 대해 = 0과 반대되는 참 거짓을 사용하고있었습니다. 아직 완전히 얻지는 못했지만 감사합니다. 너무 감사합니다! –
좋은 거래 - 다행 지금 당신을 위해 일하고있다. 3 가지 유용한 답변이있는 것 같습니다. 가장 도움이되는 질문 옆에있는 체크 표시를 클릭하여 "대답"으로 받아들입니다. 그리고 stackoverflow에 오신 것을 환영합니다. –
+1 멋지게 완료했습니다. –