2011-08-05 2 views
0

Excel VBA에 완전히 익숙합니다. 현재 사이트에서 자동으로 생성 된 데이터 표를 기반으로 데이터 요약을 생성합니다. 나는 이미 Excel로 데이터를 고칠 수있는 방법을 알아 냈다. |VBA 매크로를 사용하여 스크랩 된 데이터를 가져 와서 특정 값을 기반으로 테이블을 만듭니다.

TYPE :

긁어 데이터는 다음과 같은 형식의 뭔가 Number_Days_Logged | (행의 데이터 (6 ~ 7 개 항목)의 다른 중요한 기둥의 무리 | 내가 지금해야 할 일은

은 다음과 같다

내가 문 또는 비교 경우를해야 할 두 가지가 있습니다.. "type"열 아래에 0과 1을 가정 해 봅시다. 실제로 '1'만 입력하면되므로 'type'0을 필터링해야합니다. 그런 다음 'number_days_logged'를 확인해야합니다.이 숫자가 < 인 경우 = 1,이 조건으로 다른 항목이있는 표에 추가해야합니다. 그런 다음 "number_days_logged"> 85 및 < 항목을 확인해야합니다.이 결과는 두 번째 표에 입력해야합니다. 값> = 100 인 경우에도 이와 동일하게 수행해야합니다.

결국 결국 세 가지 테이블이 필요합니다. 첫 번째는 녹색으로, 그 다음은 주황색으로, 그리고 마지막으로 빨간색으로 서식이 지정됩니다. 각 테이블은 위의 정보로 표제를 붙여야하지만 각 행의 특정 열의 데이터 만 필요합니다. (각 행에는 레이블이 지정되어 있으며, 몇 개의 특정 열만 필요합니다.)

이것은 매우 복잡해 보이지만 배우려합니다. 누구든지 올바른 방향으로 나를 자극 할 수 있거나 그것을 더 간단하게 만들 수 있다면 고맙겠습니다. 필요에 따라 다른 세부 정보를 추가 할 수 있습니다.

+0

도움이되는 답변은 모두 upvote/accept하십시오. 자신의 질문에 시간을 할애 한 사람들을위한 표창을 보여주십시오. – aevanko

답변

1

선택 진술은 매우 명확하고 조금 더 빨리 실행되는 경향이 있습니다.

dim typeRange as range 
set typeRange = range(cells(startRow,col),cells(stopRow,col)) 
dim entry as range 
dim currentRow as integer 
for each entry in typeRange 
    currentRow = entry.Row 
    if entry.value=1 then 
     select case cells(currentRow,'Number_Days_Logged's column').value 
      case is<=1 
       'copy and paste or transcribe the cells however you need them done. 
      case is<85 
       'do nothing 
      case is<100 
       'copy and paste or transcribe the cells however you need them done. 
      case is>=100 
       'copy and paste or transcribe the cells however you need them done. 
     end select 
    end if 
next 
+0

감사합니다. 나는 중간에 "레코드 매크로"기능을 사용했습니다. 내가 원하는 것은 효과적이지만 웅변 적이거나 재사용 할 수 없습니다. 최근 대학 졸업생을위한 제안 된 자료는 업무 환경에서 탁월한 성과를 거두고 있습니까? 다시 한번 감사드립니다. – pacman326

+0

질문을하고, 시간을 내고, 대안을 생각하고, 메뉴를 탐색하고, Google을 능숙하게 잘 아는 것만 알면됩니다. 마지막 하나는 진짜 기술입니다. – Brad

0

먼저 원하는 색으로 표를 설정하고 (이 코드의 경우) 데이터의 명명 된 범위를 설정합니다. 아마 테이블의 명명 된 범위도 사용했을 것입니다. 다음은 VBA 코드의 기본 구조입니다.

Dim testrow As Range 

For Each testrow in ActiveSheet.Range("Scraped Data") 
    If testrow.Cells(1) = 1 Then 
    If testrow.Cells(2) <= 1 Then 
     <add to 0-days table> 
    ElseIf testrow.Cells(2) >= 85 AND testrow.Cells(2) < 100 Then 
     <put in 2nd table> 
    ElseIf testrow.Cells(2) >= 100 Then 
     <put in third table> 
    End If 
    End If 
Next testrow 
관련 문제