Microsoft Excel에서 VBA를 통해 반전의 텍스트 및 번호를 얻는 방법
Excel에서는 텍스트를 완전히 뒤집거나 VBA 코드로 순서를 바꾸고 싶을 때가 있습니다. 역방향 셀 내용 추출, 역방향 셀 순서 등과 같은 다양한 요구 사항이있을 수 있습니다 .
이 기사에서 우리는 다음을 배울 것입니다 :
-
역방향 셀 내용을 얻는 방법?
-
셀에서 모든 단어를 역순으로 가져 오는 방법은 무엇입니까?
-
열 순서를 바꾸는 방법은 무엇입니까?
-
텍스트에서만 역 번호를 얻는 방법은 무엇입니까?
-
activecell의 세포 내용을 반전하는 방법은 무엇입니까?
역 셀 내용을 얻는 방법?
Excel에서는 셀의 텍스트 또는 숫자를 반대로해야합니다. “english”- “hsilgne”다음은 출력 전 데이터 스냅 샷입니다.
다음은 B 열에있는 require 출력의 스냅 샷입니다.
위의 출력을 얻으려면 아래 단계에 따라 VB 편집기를 시작해야합니다. 개발자 탭을 클릭합니다. 코드 그룹에서 Visual Basic을 선택합니다.
-
표준 모듈에 아래 코드 복사
Function CompleteReverse(rCell As Range, Optional IsText As Boolean) Dim i As Integer Dim StrNewTxt As String Dim strOld As String strOld = Trim(rCell) For i = 1 To Len(strOld) StrNewTxt = Mid(strOld, i, 1) & StrNewTxt Next i If IsText = False Then CompleteReverse = CLng(StrNewTxt) Else CompleteReverse = StrNewTxt End If End Function
===
B1 셀에서 수식은 = CompleteReverse (A1, TRUE)
셀에서 모든 단어를 역순으로 가져 오는 방법은 무엇입니까?
해결책을 찾기위한 몇 가지 코드가 있습니다. 모든 단어를 역순으로 가져 오려면 다음 코드를 복사하여
Function ReverseOrder1(Rng As Range) Dim Val As Variant, Counter As Integer, R() As Variant Val = Split(Application.WorksheetFunction.Substitute(Rng.Value, " ", ""), ",") ReDim R(LBound(Val) To UBound(Val)) For Counter = LBound(Val) To UBound(Val) R(UBound(Val) - Counter) = Val(Counter) Next Counter ReverseOrder1 = Join(R, ", ") End Function
모듈에 붙여 넣습니다. C1 셀에서 수식은 = ReverseOrder1 (A1)
두 번째 VBA 코드를 살펴 보겠습니다.
Function ReverseOrder2(Rng As Range) As String Dim Counter As Long, R() As String, temp As String R = Split(Replace(Rng.Value2, " ", ""), ",") For Counter = LBound(R) To (UBound(R) - 1) \ 2 temp = R(UBound(R) - Counter) R(UBound(R) - Counter) = R(Counter) R(Counter) = temp Next Counter ReverseOrder2 = Join(R, ", ") End Function
D1 셀에서 수식은 = ReverseOrder2 (A1)
열 순서를 바꾸는 방법?
열 데이터의 순서를 반대로해야하는 경우 아래 코드를 자세히 살펴 봐야합니다.
Sub ReverseColumnOrder() Dim wBase As Worksheet, wResult As Worksheet, i As Long, x As Long Set wBase = Sheets("Sheet1") Set wResult = Sheets("Sheet2") Application.ScreenUpdating = False With wBase For i = .Range("A1").CurrentRegion.Rows.Count To 1 Step -1 x = x + 1 .Range("A1").CurrentRegion.Rows(i).Copy wResult.Range("A" & x) Next i End With Application.ScreenUpdating = True End Sub
위 코드는 sheet1의 A 열에있는 데이터를 확인한 다음 시트 2의 순서를 반대로합니다. 아래 이미지를 참조하십시오
===
텍스트에서만 역 번호를 얻는 방법?
예 : “excel (123) tip”은 셀 내용입니다. 출력 필요 : “excel (321) tip”
Excel에서는 동일한 출력을 얻는 여러 가지 방법이있을 수 있으며 VBA UDF를 사용하여 솔루션을 찾는 것도 동일합니다. 이 예에서는 5 가지 방법을 보여 드리겠습니다.
다음 코드를 표준 모듈에 복사하여 붙여 넣으십시오.
Function ReverseNumber1(v As Variant) As String Dim iSt As Integer, iEnd As Integer, sNum As String, sTemp As String iSt = InStr(v, "(") iEnd = InStr(v, ")") If iSt = 0 Or iEnd = 0 Then ReverseNumber1 = v: Exit Function sNum = Mid(v, iSt + 1, iEnd - iSt - 1) For i = Len(sNum) To 1 Step -1 sTemp = sTemp & Mid(sNum, i, 1) Next i ReverseNumber1 = Left(v, iSt) & sTemp & Mid(v, iEnd, 5 ^ 5) End Function Function ReverseNumber2(s As String) As String Dim i&, t$, ln& t = s: ln = InStr(s, ")") - 1 For i = InStr(s, "(") + 1 To InStr(s, ")") - 1 Mid(t, i, 1) = Mid(s, ln, 1) ln = ln - 1 Next ReverseNumber2 = t End Function Function ReverseNumber3(c00) c01 = Split(Split(c00, ")")(0), "(")(1) ReverseNumber3 = Replace(c00, "(" & c01 & ")", "(" & StrReverse(c01) & ")") End Function Function ReverseNumber4(c00) ReverseNumber4 = Left(c00, InStr(c00, "(")) & StrReverse(Mid(Left(c00, _ InStr(c00, ")") - 1), InStr(c00, "(") + 1)) & Mid(c00, InStr(c00, ")")) End Function Function ReverseNumber5(s As String) Dim m As Object With CreateObject("VBScript.Regexp") .Global = True .Pattern = "(\D)(\d)" For Each m In .Execute(s) ReverseNumber5 = ReverseNumber5 & m.submatches(0) & StrReverse(m.submatches(1)) Next End With Set m = Nothing End Function
B2 셀에서 수식은 = ReverseNumber1 (A2)
다음 공식을 사용하여 다른 4 개의 코드를 테스트 할 수 있습니다.
{비어 있음} 1. = ReverseNumber2 (A2)
{비어 있음} 2. = ReverseNumber3 (A2)
{비어 있음} 3. = ReverseNumber4 (A2)
{비어 있음} 4. = ReverseNumber5 (A2)
위의 5 개 매크로 코드는 모두 동일한 출력을 제공합니다. 하나; 가장 편한 코드를 채택 할 수 있습니다.
activecell의 셀 내용을 반전하는 방법?
매크로가 activecell에서만 실행되도록하고 내용을 반대로하려면. 이 코드는 수식이 포함 된 셀에서는 실행되지 않습니다.
다음 코드를 사용합니다.
Sub Reverse_Cell_Contents() 'this macro will run only on activecell' --- Comment If Not ActiveCell.HasFormula Then sRaw = ActiveCell.Text sNew = "" For j = 1 To Len(sRaw) sNew = Mid(sRaw, j, 1) + sNew Next j ActiveCell.Value = sNew End If End Sub
커서가 “exceltip”을 포함하는 A1 셀에 있으면 위의 매크로가이를 “pitlecxe”로 변환합니다.
결론 : Microsoft Excel에서 단일 솔루션에 대해 많은 UDF를 가질 수 있습니다. 이 UDF는 2003 버전부터 2013 년까지 작동합니다.
블로그가 마음에 들면 Facebook에서 친구들과 공유하세요. 또한 Twitter와 Facebook에서 팔로우 할 수도 있습니다.
우리는 여러분의 의견을 듣고 싶습니다. 우리가 작업을 개선, 보완 또는 혁신하고 여러분을 위해 더 잘 만들 수있는 방법을 알려주십시오. [email protected]_로 문의 해주세요