달성하려는 작업을 수행하는 다른 방법이 있습니다. 나는 그것이 당신에게 Find
과 Replace
보다 많은 통제력을 준다는 것을 안다.
' Get the contents of the cell
Dim s As String
s = Range("A1").Value
' Now write back only what precedes the double space
Range("A1").Value = Left(s, InStr(s, " ") - 1)
위는 단 하나의 셀에서만 작동합니다.많은 세포를 통해 동일한 작업을 수행하기 위해, 당신이 할 수 있습니다 : 다른 답변에서 지적 된 바와 같이
이
Dim cell As Range
For Each cell In Range("A1:A3")
cell.Value = Left(cell.Value, InStr(cell.Value, " ") - 1)
Next cell
, 당신은 규칙적인 공간에 의한 골칫거리가 아닌 휴식 공간 (Chr(160)
)를 교체해야합니다 전에 더블을 검색 공간 :
Dim cell As Range
For Each cell In Range("A1:A3")
cell.Value = Left(cell.Value, _
InStr(Replace(cell.Value, Chr(160), " "), " ") - 1)
Next cell
편집 주소 @ 크리스 neilsen의 코멘트 : 당신의 표적 세포 중 일부는 이중 공백이없는 경우에, 당신은을 위해
확인해야합니다 그 전에 01를 사용하는 에러 인상 그것을 않도록기능 : 표적 세포의 일부는 두 공간을 포함하는 수식을 포함하는 매우 원격 기회에서 지금
Dim cell As Range
Dim i As Long
For Each cell In Range("A1:A5")
i = InStr(Replace(cell.Value, Chr(160), " "), " ")
If i > 0 Then
cell.Value = Left(cell.Value, i - 1)
End If
Next cell
(예 : =A1 & "<space><space>" & A2
)이 수식은 값으로 대체됩니다. 이를 방지하려면 조건부를 If i > 0 And Not cell.HasFormula Then
으로 변경하십시오.
다음과 같은 몇 가지 문제가 있습니다. 1. 2를 포함하지 않는 모든 호출 값 공백으로 인해 오류가 발생합니다. 2. 수식이 값으로 대체됩니다 –
물론 이죠, 문제는 쉽게 해결됩니다. 그러나이 솔루션은 질문에 지정된 문제를 해결하고 OP가 질문에 지정된 내용과 내용이 다른 범위에이 문을 적용하기로 결정하는 경우에만 "문제"를 줄 것입니다. –