비디오 녹화와 함께 수집되고 각 프레임 번호에 대해 3 열의 데이터로 저장되는 생체 역학 데이터 (예 : 걷는 사람)가 있습니다. 동일한 워크 시트의 별도 데이터 테이블에 각 생체 역학 이벤트가 발생하는 엑셀 행 번호 (예 : 발이지면에 닿거나지면에서 튀어 나옴)를 알려주는 데이터가 있습니다. 하나의 스프레드 시트에 행으로 저장된 생체 역학 데이터를 가져 와서 각 단계가 자체 열에 있도록 전치하려고합니다. 그러나 각 생체 역학 이벤트 (즉, 각 단계)는 서로 다른 행 수입니다.
생체 역학 원시 데이터는 여기에서 볼 수 있습니다. 생체 역학 원시 데이터
내가 원하는 것은 개별 이벤트 (단계)를 다음과 같이 두 번째 워크 시트에 복사하는 것입니다. 원하는 생체 역학 이벤트 출력
대신 코드는 각 생체 역학 이벤트에 대해 루프를 성공적으로 실행하지만 데이터를 동일한 위치 인 "A4"에 배치합니다. 루프 내에서 오프셋을 사용하는 방법을 모르고 변수를 기반으로하기 때문입니다. 원하지 않는 데이터 오버레이가있는 현재 생체 역학 이벤트 출력
현재 가지고있는 코드는 다음과 같습니다.
Private Sub CommandButton1_Click()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")
Dim LeftStrike As Range, FrameLTD As Range, FrameLTDx As Range
Dim lrL As Long, LastFrame As Long
Dim LeftTD As Variant
Dim LeftTDx As Variant
lrL = ws.Range("H" & ws.Rows.Count).End(xlUp).Row
LastFrame = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set LeftStrike = ws.Range("H2:H" & lrL)
For Each FrameLTD In LeftStrike
If InStr(FrameLTD, "Foot Strike") Then
LeftTD = FrameLTD.Offset(0, 2)
'COMMENT: Set LeftTDx = LeftTD + 1
ws.Range("A" & LeftTD, "D" & LastFrame).Copy ws2.Range("A4")
' COMMENT: ws.Range("A" & LeftTDx, "D" & LastFrame).Copy ws2.Range("FrameLTD").Offset(0, 5)
End If
Next FrameLTD
End Sub
프로그램이 원하는 것은 다음과 같습니다. 1. "Foot Strike"문자열을 찾아 2 열의 값을 알려주고 LeftTD라고합니다 (이렇게합니다). 2. LeftTD의 행 번호 값에서 시작하여 A부터 D까지의 셀을 복사하여 A4에서 시작하는 새 워크 시트에 붙여 넣습니다 (이 작업을 수행함). 3. 다음 "Foot Strike"및 나머지 모두에 대해 1 단계와 2 단계에서 동일한 작업을 수행 한 다음 이전 복사 및 붙여 넣기 이벤트에서 오프셋 (0,5)을 사용하여 셀을 복사합니다 (이 작업은 수행하지 않음). . 4. H 열이 비워 질 때까지이 작업을 수행합니다 (이렇게합니다).
내 생각은 변수를 "변형"으로 선언하면 다음 LeftTD를 LeftTD +1로 세도록 지시 한 다음 범위 변수의 범위를 5만큼 오프셋하도록 지시 할 수 있다고 생각했습니다. 그러나 해당 줄의 주석 처리를 제거하면 유형 불일치 오류가 발생합니다. 또한 흥미롭게도 F8 키를 누르고 프로그램을 단계별로 실행하면 프로그램을 통해 2, 5, 7, 9 번째에 각 생체 역학 이벤트 (각 단계) 만 복사됩니다.
내 특정 질문은 범위 변수를 반복하는 For 루프 내에서 변수 오프셋을 어떻게 사용합니까?
.Find 및 .FindNext를 사용하는 것에 대해 생각했지만 웹에서 사용할 수있는 정보는 내가해야 할 일에 가까운 예제가 부족합니다. 사실, 가변 행과 가변 오프셋 열을 사용하여 복사 및 붙여 넣기에 대한 정보를 찾는 것도 어렵습니다. 제공된 통찰력을 크게 주시면 감사하겠습니다. 감사합니다!!!!
목적지를 식별하는 카운터 추가
Dim DestCol As Long
'...
DestCol = 1
For Each FrameLTD In LeftStrike
If InStr(FrameLTD, "Foot Strike") Then
LeftTD = FrameLTD.Offset(0, 2)
ws.Range("A" & LeftTD, "D" & LastFrame).Copy ws2.Cells(4, DestCol)
DestCol = DestCol + 5
End If
Next FrameLTD
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다