여기에서 하나의 정말 어려운 문제가 있습니다. 우리 부서가 수백만을 구하기 위해서는이 문제를 해결하는 것이 매우 중요합니다 (진심 어린 도움을 깊이 주신 것입니다). 사실 우리는 텍스트 형태로 "격자 선 데이터"라는 두 개의 다른 열을 가지고 있습니다. 예 : GL 23.5-24/G. 여기서 23.5-24는 X 축 방향의 값을 나타내고 G는 Y 축 방향의 값을 나타냅니다. 이 모든 데이터는 하나의 열에 있습니다. 데이터가 단일 값이 아닌 값 조합 인 경우가 있습니다. GL 24-24.7/S-T, GL 25.3-25.5/S-T, 때로는 GL 27/H 27/H.5 26.5/J.5 GL 26.5-27.5/L과 비슷합니다. 이제이 데이터로 작업 할 때 두 가지 큰 문제가 발생했습니다. 먼저이 텍스트 기반 데이터를 유용하고 직접적으로 이해할 수있는 그리드 라인 데이터로 변환해야한다는 것입니다. 즉 GL 24-24.7/ST는 한 셀에서는 24 - 24.7, 다른 셀에서는 24.7과 같아야합니다. 24 - 24.7이 X 축을 따르고 그 반대도 마찬가지입니다. 이 작업을 수행 한 후에이 데이터를 동일한 유형의 데이터, 즉 GL 24.5/S.5를 갖는 다른 열과 비교해야합니다. 비교는 그리드가 주 그리드의 하위 집합으로 분류되는지 아닌지를 알려주는 방식으로 이루어져야합니다. 예 : 23 - 25/R - T와 같이 메인 그리드 선이 있고 두 번째 그리드가 24.5/S이면 확실하게이 두 번째 그리드가 첫 번째 그리드 사이에 떨어집니다.그리드 라인 데이터를 파싱하고 다른 데이터와 비교하여 그리드 범위를 얻으십시오
그럼 전체적인 문제는 유용한 그리드에서 텍스트 데이터를 분리 한 후 다른 첫 번째 그리드 선을 검사하는 것입니다. 나는 전반적인 문자열의 파싱을 얻기 위해서만 스크래치 작업을 조금했지만 더 진행하기 위해 합리적인 알고리즘을 형성 할 수 없었다.
다음은 데이터를 구문 분석하기위한 현재 코드입니다.
Dim strAll() As String
Dim strSNO() As String, Meesam() As String
Dim lastRow As Integer, i As Integer, newRng As Range, cnt As Integer, x As String
Dim a As Integer
With ThisWorkbook.Sheets("Data")
lastRow = .Range("A7000").End(xlUp).Row
ReDim strAll(lastRow)
Set newRng = .Range("A1:A" & lastRow)
End With
For cnt = LBound(strAll()) To UBound(strAll())
strAll(cnt) = newRng.Cells(cnt + 1, 1).Value
Next
Do While i < UBound(strAll)
If (InStr(1, strAll(i), "Element", vbTextCompare) > 0) Then
i = i + 2
Do Until InStr(1, strAll(50), "+GL", vbTextCompare) > 0 'Loop until line includes "+"
Meesam = SplitMultiDelims(strAll(i), "/")
a = 0
For a = LBound(Meesam) To UBound(Meesam)
newRng.Offset(i, a) = Meesam(a)
Next
i = i + 1
Loop
End If
i = i + 1
Loop
나는 그것이 정말로 복잡한 프로젝트라는 것을 알고있다. 그러나 정말로 그것을 관리 할 수있는 전문가가 많이있다. 나는 전반적인 가이드 라인이 필요하며 직접 프로젝트를 돌볼 것입니다. Thnx –
누군가가 몇 가지 일반적인 생각을 공유 할 수 있다고해도 나는 매우 행복 할 것입니다. 내 생각은 별개의 그리드 데이터를 얻을 수 있도록 ","값을 기반으로 데이터를 구문 분석하는 것입니다. 그 다음에 가장 중요한 것은 B> A 등 어떤 값이 더 높은지를 결정하는 것입니다 (영문자 기준). 이 모든 후 나는 내 비교 목록과 비교할 수있는 몇 가지 비교 기술을 사용할 수 있습니다. –
얘들 아 문제에 대한 완벽한 해결책을 찾았습니다. 최종 해결책을 찾기 위해 거의 한 달이 걸렸습니다. –