제목을 단어로 분리하고 다른 제목으로 검색


0

나는 A와 B 열 모두에서 제목이있는 Excel 파일을 자동화하려고했는데 B에서 A에서 각 단어를 검색해야했습니다. 어떤 단어가 일치하면 사용 가능한 B 열 뒤에 붙여야합니다 (C, D, ...) 같은 행에.

아래의 코드를 사용하여 단어를 열 제목의 별도 열에 수동으로 분리하고 열 B에서 검색합니다.

Dim a() As String
Dim b() As String
Dim aRng As Range
Dim cel As Range
Dim i As Integer, t As Integer, clm As Integer

Set aRng = Range(Range("KW1"), Range("KW1").End(xlDown))

For Each cel In aRng
    a = Split(cel, " ")
    b = Split(cel.Offset(, 1), " ")
    clm = 2

    For i = LBound(a) To UBound(a)
        For t = LBound(b) To UBound(b)
            If UCase(a(i)) = UCase(b(t)) Then
                cel.Offset(, clm) = a(i)
                clm = clm + 1
            End If
        Next
    Next

Next

그러나 중복 단어가 있다면 반복해서 반복합니다. 중복되는 단어를 피할 수있는 방법이 있습니까? 제발 도와주세요.


그래서 인쇄해야합니다. ...마다 A와 B가 일치하는 단어? 나는 어떤 배열을 사용한다고 말하고 싶다. 중복을 피하려면 사전을 사용하십시오. 그러나 각 행 다음에이를 지워야합니다.
Raystafarian

답변:


0

이것은 실제로 가장 깨끗한 방법은 아니지만 빈 셀에 도달 할 때까지 채워진 각 셀을 오프셋 2에서 반복하여 검사 할 수 있습니다. 이 코드는 테스트되지 않았습니다.

For i = LBound(a) To UBound(a)
    For t = LBound(b) To UBound(b)
        If UCase(a(i)) = UCase(b(t)) Then
            clm = 2
            Do While True
                If UCase(cel.Offset(, clm)) = UCase(a(i)) Then
                    Exit Do
                End If
                If cel.Offset(, clm) = "" Then
                    cel.Offset(, clm) = a(i)
                    Exit Do
                End If
                clm = clm + 1
            Loop
        End If
    Next
Next

안녕하세요 제이슨 대신 위의 코드에서 할 동안 루프를 사용하려고했는데 혼란스러워. 너 나 좀 도와 줄래?
Linga

Do While은 빈 셀을 찾을 때까지 반복되므로 작동합니다. For 루프를 사용하려면 해당 행에서 마지막으로 사용한 셀을 찾고 루프를 2에서 해당 열 + 1로 루프해야합니다. 그렇지 않으면 해당 행의 모든 ​​열을 반복하고 일치하는 항목을 찾을 때 종료해야합니다. 또는 빈 셀에 도달합니다. 후자를 수행하려면 Do While True 성명 For clm = 2 to cel.EntireRow.Cells.Count, Loop 성명 Next둘 다 바꿔라. Exit Do 성명 Exit For, clm = clm + 1 성명서.
Jason Clement

이제는 차가워 요 :) 다시 Jason에게 감사드립니다.
Linga

안녕하세요. 제이슨, 이제 저는 아래 코드를 사용하여 B 열과 제목이 일치하는 비율을 계산하고 있습니다. 그러나 나는 열 A에 단어의 정확한 번호를 얻을 수 없었고 정확한 숫자 단어는 열 B와 일치합니다. 코드를 확인하고 내가 틀렸다면 수정 해 주실 수 있습니까?
Linga

0

Sub percentage()

Dim a () As String Dim b () 문자열로 범위 제한 Dim Cel As Range Dim i는 정수, t는 정수, clm은 정수 aRng = 범위 (범위 ( "A1"), 범위 ( "A65536"). 끝 (xlDown))

각 셀에 대해     a = 분할 (셀, "")     b = 분할 (cel.Offset (, 1), "")     d = 0     clm = 2     C = UBound (a) cel.Value & lt; & gt; ""그런 다음     i = LBound (a)에 대해 UBound (a)

        For t = LBound(b) To UBound(b)
            If UCase(a(i)) = UCase(b(t)) Then
                clm = 2
             Do While True
                If UCase(cel.Offset(, clm)) = UCase(a(i)) Then
                Exit Do
                End If
                    If cel.Offset(, clm) = "" Then
                        'cel.Offset(, clm) = a(i)
                        Exit Do
                    End If
                    clm = clm + 1
                Loop
                d = d + 1
            End If

        Next

Next

`MsgBox '총 단어 "& amp; C & amp; '일치하는 단어'& amp; 디 '셀 .Offset (0, 2). 값 = (d / c) 끝면 다음 것

엔드 서브`

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.