Aggiorna la tabella principale con valori aggiornati e nuovi valori dalle informazioni quotidiane

Attualmente stavo tentando di creare uno script che, quando eseguito, guarda tutti i valori univoche nelle celle A5 fino all'ultima row utilizzata nel foglio giornaliero . Con ciascuno di questi valori occorre guardare nel foglio master da A3 fino all'ultima row utilizzata.

Se il valore univoco esiste già nel foglio master , deve copiare i nuovi valori da B & R a H & Row nella scheda giornaliera sui valori esistenti nel foglio master da B & R a H & Row. Se il valore univoco non esiste, deve riportrlo alla prossima row disponibile insieme a dati corrispondenti da B & R a H & Row.

  • Funzioni delle celle di aggiunta di Excel (C #)
  • Impedire la conversione della data in VBA
  • Eseguire codice SAS da Excel
  • Come aprire più file per l'output in VBA?
  • L'operazione richiesta richiede un object Session OLE DB ... - Connessione di Excel al server SQL tramite ADO
  • I dati di SQL Server 2008 in Excel con VB6
  • sotto è il codice che sto attualmente cercando di eseguire, ma non functionrà la sezione in questione è "'Per tutti i tempi di scorrimento nel rapporto di spostamento quotidiano, trovare se sono nuovi o aggiornare esistenti nel mastersheet ";

    Sub SaveWorkbook() Dim C As Range Dim lastC As Long Dim lastRow As Long Dim eRow As Long Dim w1 As Workbook Dim w2 As Workbook Dim rng As Range Dim v As Variant Application.ScreenUpdating = False 'Clear workers on shift '------------------------------------------------------------------------- ActiveWorkbook.SaveAs Filename:="C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm" Sheets("Cover").Activate lastC = Cells(Rows.Count, "C").End(xlUp).Row + 16 With Range("B13:F50") .ClearContents End With 'Open Mastersheet and define empty row in Downtimes '------------------------------------------------------------------------- Application.Workbooks.Open ("C:\Users\sreilly\Documents\test\ShiftReportMaster.xlsx") Set w1 = Workbooks(Worksheets("Cover").Range("B5").Text & ".xlsm") Set w2 = Workbooks("ShiftReportMaster.xlsx") lastRow = Workbooks(w1).Worksheets("Downtime").Cells(Rows.Count, "A").End(xlUp).Row eRow = Workbooks(w2).Worksheets("Downtimes").Cells(Rows.Count, "A").End(xlUp).Row 'For all Downtimes in Daily Shift Report find if they are new or update existing in mastersheet '---------------------------------------------------------------------------------------------- For n = 5 To lastRow v = Application.Match(Workbooks(w1).Worksheets("Downtime").Cells(n, 1), Workbooks(w2).Worksheets("Downtimes").Columns("A"), 0) eRow = eRow + 1 If IsNumeric(v) Then Workbooks(w2).Worksheets("Downtimes").Range("cells(v,2):cells(v,15)").Value = Workbooks(w1).Worksheets("Downtime").Range("cells(v,2):cells(v,15)").Value Else Workbooks(w2).Worksheets("Downtimes").Range("cells(eRow,1):cells(eRow,15)").Value = Workbooks(w1).Worksheets("Downtime").Range("cells(v,1):cells(v,15)").Value End If Next n* 'Save and close mastersheet with changes and clear all information to make new template for next shift '------------------------------------------------------------------------------------------------------ Workbooks("ShiftReportMaster.xlsx").Close savechanges:=True Sheets("downtime").Range("A1:O100").ClearContents 'clear downtimes Sheets("downtime").Range("Q5:T100").ClearContents 'clear delays Sheets("workorder").Range("A8:BZ100").ClearContents 'clear workorder information Sheets("Time confirmations").Range("A2:L100").ClearContents 'clear time confirmation information Sheets("cover").Range("E5:E7").ClearContents 'clear Crew, Supervisor and Coordinator Sheets("Cover").Activate If Range("E4").Value = "DS" Then Range("E4").Value = "NS" Else Range("E4").Value = "DS" Range("F3").Value = Range("F3").Value + 1 End If 'If next shifts report doesnt exist in folder already, create it other wise skip this step '------------------------------------------------------------------------------------------ If Dir("C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm") = "" Then ActiveWorkbook.Close savechanges:=True, Filename:="C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm", RouteWorkbook:=False End If Application.ScreenUpdating = True End Sub 

    Qualsiasi aiuto sarebbe molto apprezzato.

  • Angolo di rotazione per un'etichetta dati lungo una linea su un grafico
  • Rimuovere dynamicmente gli spazi da una serie di celle eccellenti
  • Esiste un'espressione regolare per un elenco separato da virgole di valori discreti?
  • Casella di riepilogo bloccata in cella di Excel
  • Importzione ed esportzione di dati in excel tramite appunti
  • Come estrarre dati particolari da 800+ file HTML scaricati in massa
  • One Solution collect form web for “Aggiorna la tabella principale con valori aggiornati e nuovi valori dalle informazioni quotidiane”

    risolto,

    Per favore vedi il codice qui sotto per la soluzione;

     Sub SaveWorkbook() Dim C As Range Dim lastC As Long Dim lastRow As Long Dim eRow As Long Dim w1 As Workbook Dim w2 As Workbook Dim rng As Range Dim v As Variant Dim Fname As String Application.ScreenUpdating = False Fname = Worksheets("Cover").Range("B5").Text & ".xlsm" 'Clear workers on shift '------------------------------------------------------------------------- ActiveWorkbook.SaveAs Filename:="C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm" Sheets("Cover").Activate lastC = Cells(Rows.Count, "C").End(xlUp).Row + 16 With Range("B13:F50") .ClearContents End With 'Open Mastersheet and define empty row in Downtimes '------------------------------------------------------------------------- Application.Workbooks.Open ("C:\Users\sreilly\Documents\test\ShiftReportMaster.xlsx") Set w1 = Workbooks(Fname) Set w2 = Workbooks("ShiftReportMaster.xlsx") lastRow = w1.Worksheets("Downtime").Cells(Rows.Count, "A").End(xlUp).Row eRow = w2.Worksheets("Downtimes").Cells(Rows.Count, "A").End(xlUp).Row 'For all Downtimes in Daily Shift Report find if they are new or update existing in mastersheet '---------------------------------------------------------------------------------------------- For n = 5 To lastRow v = Application.Match(w1.Worksheets("Downtime").Cells(n, 1), w2.Worksheets("Downtimes").Columns("A"), 0) If IsNumeric(v) Then w1.Activate w1.Worksheets("Downtime").Activate '.Range(Cells(n, 1), Cells(n, 15)).Select w1.Worksheets("Downtime").Range(Cells(n, 2), Cells(n, 15)).Copy w2.Activate w2.Worksheets("Downtimes").Range(Cells(v, 2), Cells(v, 15)).PasteSpecial xlPasteValuesAndNumberFormats Else eRow = eRow + 1 w1.Activate w1.Worksheets("Downtime").Activate '.Range(Cells(n, 1), Cells(n, 15)).Select w1.Worksheets("Downtime").Range(Cells(n, 1), Cells(n, 15)).Copy w2.Activate w2.Worksheets("Downtimes").Range(Cells(eRow, 1), Cells(eRow, 15)).PasteSpecial xlPasteValuesAndNumberFormats End If Next n 'Save and close mastersheet with changes and clear all information to make new template for next shift '------------------------------------------------------------------------------------------------------ Workbooks("ShiftReportMaster.xlsx").Close savechanges:=True Sheets("downtime").Range("A1:O100").ClearContents 'clear downtimes Sheets("downtime").Range("Q5:T100").ClearContents 'clear delays Sheets("workorder").Range("A8:BZ100").ClearContents 'clear workorder information Sheets("Time confirmations").Range("A2:L100").ClearContents 'clear time confirmation information Sheets("cover").Range("E5:E7").ClearContents 'clear Crew, Supervisor and Coordinator Sheets("Cover").Activate If Range("E4").Value = "DS" Then Range("E4").Value = "NS" Else Range("E4").Value = "DS" Range("F3").Value = Range("F3").Value + 1 End If 'If next shifts report doesnt exist in folder already, create it other wise skip this step '------------------------------------------------------------------------------------------ If Dir("C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm") = "" Then ActiveWorkbook.Close savechanges:=True, Filename:="C:\Users\sreilly\Documents\test\" & Worksheets("Cover").Range("B5").Text & ".xlsm", RouteWorkbook:=False End If Application.ScreenUpdating = True End Sub 
    Microsoft Office Excel Spreadsheet è il miglior software di Office, Excel VBA e formule Excel rendono il foglio di calcolo più veloce.