2013-05-29 2 views
0

다음 데이터가 있으며이를 특정 형식의 Excel 시트에 매핑하려고합니다. ie 노드 이름을 추출해야합니다. "BLRTRC1", "BSC23", "BSC41" (경보 조건이 다른 단일 노드가 여러 번있을 수 있음)검색된 범위 내에서 어떻게 검색합니까?

먼저 ""을 검색해야합니다. 즉, "SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION", "DIGITAL PATH QUALITY SUPERVISION"등과 같은 범위 내에서 검색 할 수 있습니다. 최대 그런 다음 알람 이름을 가진 노드 이름과 마찬가지로

"SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
8ETM2 TRAFLIM VC15-2 32 1 1 UNEQ   130226 030244" 

같은 경보 통계를 인쇄

(이 경우 "BSC23""BLRTRC1"의 3 명 발생 후 표시 등) 다음 노드 이름이 표시되지 않을 때까지 모든 노드에 대해이 작업을 수행해야합니다. 나는 이것을 1 주일 이상 붙어 있었고 지금은 그것을 얻을 수없는 것 같아서 도와주세요.

다음은 편집하려는 샘플 텍스트입니다.

추신. 나는 이미 엑셀 시트에이 텍스트를 가져온 "A : A"

A1/APT "BLRTRC1\02\G12" 007 130226 0302  
SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION 

SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
8ETM2 TRAFLIM VC15-2 32 1 1 UNEQ   130226 030244 

TYPE PL/TTI         ERDIINFO 


A1/APT "BLRTRC1\02\G12" 007 130226 0302  
SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION 

SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
7ETM2 TRAFLIM VC12-2 3 1 1 UNEQ   130226 030244 

TYPE PL/TTI         ERDIINFO 


A3/APT "BLRTRC1\02\G12" 009 130226 0302  
DIGITAL PATH QUALITY SUPERVISION 

SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
7ETM2 TRAFLIM VC12-8 3 3 1 UNEQ   130226 030244 

TYPE PL/TTI         ERDIINFO 


A3/APT "BBSC23/G12A/CPA" 021 130521 1130  
DIGITAL PATH QUALITY SUPERVISION 

SES 
DIP  DIPPART SESL2 QSV SECTION DATE TIME 
42MNPBS   1  1    130521 113000 

TYPE PL/TTI         ERDIINFO 

A2/APT "BSC41\\CPA02\\G" 985 130521 1204  
DIGITAL PATH FAULT SUPERVISION 

DIP  DIPEND FAULT  SECTION HG DATE TIME 
BL2397   RDI      130521 120407 

를이 내가 여기에 매크로

nodename  Alarm name         alarmlevel 
BLRTRC1 SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
                8ETM2 TRAFLIM VC15-2 32 1 1 UNEQ   130226 030244 
BLRTRC1 SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
                7ETM2 TRAFLIM VC12-2 3 1 1 UNEQ   130226 030244 
BLRTRC1 DIGITAL PATH QUALITY SUPERVISION   SDIP  STATE  LAYER K L M FAULT INFO DATE TIME 
                7ETM2 TRAFLIM VC12-8 3 3 1 UNEQ   130226 030244 
BSC23 DIGITAL PATH QUALITY SUPERVISION   DIP  DIPPART SESL2 QSV SECTION DATE TIME 
                42MNPBS   1  1    130521 113000 
BSC41 DIGITAL PATH FAULT SUPERVISION     DIP  DIPEND FAULT  SECTION HG DATE TIME 
                BL2397   RDI      130521 120407 

의 사용이 필요한 출력의 유형입니다 코드는 내가 지금까지

Sub Search11() 
Dim TEST 
Dim Today 
Today = Now 

Dim c(4) As Variant 
Dim a(4) As Variant 
a(0) = 1 
For i = 0 To 3 
Set Test20 = Range(Cells(a(i), 1), Cells(a(i) + 32, 1)).Find(What:="BLRTRC1") 

If Test20 Is Nothing Then 
GoTo LABEL1 
Else 
a(i + 1) = Test20.Row 
c(i) = "BLRTRC1" 
End If 
LABEL1: Next i 

Dim d(4) As Variant 
Dim b(4) As Variant 
b(0) = 1 
For i = 0 To 3 
Set Test21 = Range(Cells(b(i), 1), Cells(b(i) + 32, 1)).Find(What:="BSC23") 

If Test21 Is Nothing Then 
GoTo LABEL2 
Else 
b(i + 1) = Test21.Row 
d(i) = "BSC23" 
End If 
LABEL2: Next i 

Dim e(4) As Variant 
Dim f(4) As Variant 
e(0) = 1 
For i = 0 To 3 
Set Test21 = Range(Cells(e(i), 1), Cells(e(i) + 32, 1)).Find(What:="BSC41") 

If Test21 Is Nothing Then 
GoTo LABEL3 
Else 
e(i + 1) = Test21.Row 
f(i) = "BSC41" 
End If 
LABEL3: Next i 


Dim o(3) As Variant 
o(0) = "SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION" 
o(1) = "DIGITAL PATH QUALITY SUPERVISION" 
o(2) = "DIGITAL PATH FAULT SUPERVISION" 

Dim t(2) As Variant 
t(0) = "SYNCHRONOUS DIGITAL PATH FAULT SUPERVISION/A1" 
t(1) = "DIGITAL PATH QUALITY SUPERVISION/A3" 
t(2) = "DIGITAL PATH FAULT SUPERVISION/A2" 

Dim s(3) As Variant 

s(0) = "SDIP" 
s(1) = "DIP" 
s(2) = "DIP" 

R = 2 
i = 0 


For i = 0 To 3 
k = 0 
If a(i) > 0 Then 

For k = 0 To 2 
Set Test4 = Range(Cells(a(i), 1), Cells(a(i) + 10, 1)).Find(What:=o(k)) 

If Test4 Is Nothing Then 
    GoTo NXTALARM 
Else 
    Set Test5 = Range(Cells(a(i), 1), Cells(a(i) + 10, 1)).Find(What:=s(k)) 
    If Test5 Is Nothing Then 
    GoTo NXTALARM 
    Else 
    p = Test5.Row 
    Cells(p + 1, 1).Select 
    Selection.Copy 
    Sheets("Sheet2").Activate 
    Range("C" & R + 1).Select 
    ActiveSheet.Paste 
    Cells(R, 1).Value = c(i) 
    Cells(R, 2).Value = t(k) 
    Cells(R, 3).Value = Test5 
    Cells(R, 4).Value = Today 
    Sheets("Sheet4").Activate 
    R = R + 2 
End If 
End If 
NXTALARM: Next k 

Else 
End If 

If b(i) > 0 Then 

For k = 0 To 2 
Set Test4 = Range(Cells(b(i), 1), Cells(b(i) + 10, 1)).Find(What:=o(k)) 

If Test4 Is Nothing Then 
    GoTo NXTALARM2 
Else 
    Set Test5 = Range(Cells(b(i), 1), Cells(b(i) + 10, 1)).Find(What:=s(k)) 
    If Test5 Is Nothing Then 
    GoTo NXTALARM2 
    Else 
    p = Test5.Row 
    Cells(p + 1, 1).Select 
    Selection.Copy 
    Sheets("Sheet2").Activate 
    Range("C" & R + 1).Select 
    ActiveSheet.Paste 
    Cells(R, 1).Value = d(i) 
    Cells(R, 2).Value = t(k) 
    Cells(R, 3).Value = Test5 
    Cells(R, 4).Value = Today 
    Sheets("Sheet4").Activate 
    R = R + 2 
End If 
End If 
NXTALARM2: Next k 

Else 
End If 
If e(i) > 0 Then 

For k = 0 To 2 
Set Test4 = Range(Cells(e(i), 1), Cells(e(i) + 10, 1)).Find(What:=o(k)) 

If Test4 Is Nothing Then 
    GoTo NXTALARM2 
Else 
    Set Test5 = Range(Cells(e(i), 1), Cells(e(i) + 10, 1)).Find(What:=s(k)) 
    If Test5 Is Nothing Then 
    GoTo NXTALARM3 
    Else 
    p = Test5.Row 
    Cells(p + 1, 1).Select 
    Selection.Copy 
    Sheets("Sheet2").Activate 
    Range("C" & R + 1).Select 
    ActiveSheet.Paste 
    Cells(R, 1).Value = f(i) 
    Cells(R, 2).Value = t(k) 
    Cells(R, 3).Value = Test5 
    Cells(R, 4).Value = Today 
    Sheets("Sheet4").Activate 
    R = R + 2 
End If 
End If 
NXTALARM3: Next k 

Else 
End If 


'NXTALARM: Next k 
NXTNODE: Next i 

'Application.Run ("multiplebuttons") 
'Application.Run ("CommentAddOrEdit") 
    ' MsgBox a(55) 
End Sub 
을에 일한

광산 발생하는 중복의 100 단위를 일으키는이 코드 및 전 범위 그것을 stucks를 확장하려고하면!

http://postimg.org/gallery/oqk3ga8/

+1

이미 수행 한 작업을 표시 할 수 있습니까? 즉, 일부 코드 게시 – booyaa

+0

위 코드를 게시 했으므로 살펴볼 수 있습니다. – user2431436

+0

데이터의 스크린 샷을 표시 할 수 있습니까? 이 비트 :'나는 이미이 텍스트를 "A : A"의 Excel 시트에 가져 왔습니다. 파일의 구조/레이아웃을보고 싶습니다. –

답변

-1

당신이 한 줄의 테이블 항목이 아닌 더블 라인 "단락"로 당신의 출력을 변경하는 경우 당신은 간단한 생활을 많이 할 것입니다. [필요한 경우 나중에 다시 포맷 할 수 있습니다.] 첫 번째 단계로서, 필자는 인접한 워크 시트에 입력 한 내용을 단일 행 항목으로 다시 구성하는 "파서"를 개발할 것입니다.

+0

안녕하세요, 저는 아주 새로워서 안내 할 수 있습니까? 당신의 진술을 통해 나에게 – user2431436

관련 문제