2016-09-28 5 views
-2

Sheet1 90 열과 288 행이 있습니다. 각 행의 일부 셀은 값을 가지며 일부는 비어 있습니다 (수식 포함). 왼쪽으로오고 공백이 오른쪽으로가는 셀을 포함하는 값으로 Sheet2의 각 행 데이터를 다시 정렬합니다. 빈 셀을 제거하지 않으려 고합니다. 행에 데이터가 없으면 제거되지 않습니다. 내 경우에는 행 순서가 중요합니다. Sheet1이 5 분마다 업데이트되었습니다. 매 5 분마다 Sheet2를 업데이트 할 수 있다면 정말 좋습니다. 예 : Sheet1의 Sheet1셀 값을 기준으로 행 데이터 재정렬

시트 2 Sheet2

NB : 내 VBA 또는 매크로 지식은 아주 기본입니다. 제가 너무 많이 요구하지 않는다면, 해결책을 적용하는 설명이 훌륭 할 것입니다. 사무실 사용 365 최신 버전

+0

'VBA 또는 매크로 지식'은 '매우 기본적인'것으로 보이지 않습니다. 사실, 그것은 존재하지 않는 것처럼 보입니다. – Jeeped

+0

음, 맞습니다. 어떤 제안이나 지시 사항을 높이 평가 될 것입니다. 어쨌든 나는 내 질문을 향상시킬 수 있습니까? – vungvang

+0

코드를 요구하고 어떤 것도 제공하지 않기 때문에 Voted-To-Close로 질문을합니다. 이것은 당신이 너무 게으르고 또는 쓸 수없는 무료 코드를 얻을 장소가 아닙니다. 질문을 향상 시키려면 : ** 코드 작성 및 오류 또는 문제 설명과 함께 질문에 포함 시키십시오 ** ([ask]). – Jeeped

답변

0

시작할 장소를 찾는 데 어려움이 있다면 Worksheet_Change Sheet1의 이벤트 매크로를 사용해보십시오.

Option Explicit 

Private dALL As Double 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Application.Sum(Target.Parent.UsedRange.Cells) <> dALL Then 
     dALL = Application.Sum(Target.Parent.UsedRange.Cells) 
     On Error GoTo bm_Safe_Exit 
     'suspend events so nothing on Sheet2 gets triggered 
     Application.EnableEvents = False 
     Dim a As Long, i As Long, j As Long, aVALs As Variant 
     aVALs = Target.Parent.UsedRange.Cells.Value2 
     For i = LBound(aVALs, 1) To UBound(aVALs, 1) 
      For j = LBound(aVALs, 2) To UBound(aVALs, 2) - 1 
       If Not CBool(Len(aVALs(i, j))) Then 
        For a = j + 1 To UBound(aVALs, 2) 
         If CBool(Len(aVALs(i, a))) Then 
          aVALs(i, j) = aVALs(i, a) 
          aVALs(i, a) = vbNullString 
          Exit For 
         End If 
        Next a 
       End If 
      Next j 
     Next i 
     With ThisWorkbook.Worksheets("Sheet2") 
      .UsedRange.Clear 
      .Cells(1, 1).Resize(UBound(aVALs, 1), UBound(aVALs, 2)) = aVALs 
     End With 
    End If 
bm_Safe_Exit: 
    Application.EnableEvents = True 
End Sub 
+0

귀하의 지속적인 지원에 많은 감사드립니다. 확실히 여기에서 시작하여 업데이트 할 것입니다. 다시 한번 감사드립니다. – vungvang

관련 문제