2013-02-17 3 views
0

9 번째 문자에 - 기호가 있으면 문자열 A의 부분을 잘라내어 B 열에 붙여 넣기위한 매크로가 필요합니다. 나는 복사/붙여 넣기 텍스트 부분을 잘라 내기/붙여 넣기하지 않습니다 stackoverflow 일부 코드를 발견했다. 내 데이터는 다음이매크로를 사용하여 문자열 부분 잘라 내기 및 붙여 넣기

SUBIAIUP-456253 
SUBIAIUP-254 

처럼 보이는 내가 지금까지 가지고있는 코드입니다 : 어떤 도움이 많이 감사합니다

Public Sub LeftSub() 
Dim cell As Range 
Dim sourceRange As Range 

Set sourceRange = Sheet1.Range("A1:A180") 

For Each cell In sourceRange 

    If Mid(cell.Value, 9, 1) = "-" Then 

    'this code should cut/paste the value from col A to col B, not copy/paste 
    Sheets("Sheet1").Range("B" & cell.Row).Value = Mid(cell.Value, 9, 20) 

    End If 
    Next 
End Sub 

.
감사합니다. 당신이 열 A에서 제거 열 B로 붙여 넣을 값을 원하는 경우

+0

데이터가 위 샘플에 표시된 것과 같으면 VBA가 필요하지 않습니다. Text To Columns도 사용할 수 있습니다 :) –

답변

3

, 이것을 사용 :

If Mid(cell.Value, 9, 1) = "-" Then 
    cell.Offset(, 1).Value = Mid(cell.Value, 9) 
    cell.Value = Left(cell, 8) 
End If 

시드와 브렛 지적, 우리는 미드에 대한 문자 인수의 번호가 필요하지 않습니다 중간 지점에서 나머지 값을 가져 오는 경우 함수입니다. 열 B 값의 시작 부분에 대시가 필요하면 중점을 9로 설정하십시오. 생략하려면 10으로 설정하십시오.

열 A의 전체 값을 잘라 내기/붙여 넣기하려면 B를 사용하려면 다음을 사용하십시오.

If Mid(cell.Value, 9, 1) = "-" Then 
    'this code WILL cut/paste the value from col A to col B, not copy/paste 
    cell.Cut cell.Offset(, 1) 
End If 
+0

+1 좋은 것 :) Mid (cell.Value, 9, 20) 대신에'Mid (cell.Value, 10)'을 사용하고 싶습니다 –

+0

+1' mid $ (cell.value, 10)':) – brettdj

+0

고마워, 신사. 나는 진술의 왼쪽 편을 리팩터링했고 오른쪽을 보지 않았다. @brettdj : 중간 $가 문자열을 반환하고 중간이 변형을 반환하고 중간 $가 더 좋은 성능을 발휘할 수 있다고 들었습니다. 그게 사실이야? –

관련 문제