Moderatori: Anthony47, Flash30005
Sub SommaValoriRighe()
'Come prima cosa riallinea su unica colonna i dati
Range("A2:B7").Select 'da personalizzare con la tua area
Selection.Copy
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D2:E7").Select 'da personalizzare con la tua seconda area
Application.CutCopyMode = False
Selection.Copy
Range("G8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Poi somma i valori delle celle doppioni-Mi raccomando SCEGLI L'AREA TU e non quella che ti propone
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "Somma Doppioni"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Scegli Area", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub
Ricky0185 ha scritto:Se invece vuoi automatizzare sul 2003 con macro (sulla base del tuo post delle 8.13)
- Codice: Seleziona tutto
Sub SommaValoriRighe()
'Come prima cosa riallinea su unica colonna i dati
Range("A2:B7").Select 'da personalizzare con la tua area
Selection.Copy
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("D2:E7").Select 'da personalizzare con la tua seconda area
Application.CutCopyMode = False
Selection.Copy
Range("G8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Poi somma i valori delle celle doppioni-Mi raccomando SCEGLI L'AREA TU e non quella che ti propone
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "Somma Doppioni"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Scegli Area", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub
Puoi lanciarla con Ctrl+z
Sul 2003 le formule di Marius non funzionano.
Facci sapere.
Ciao
R
Sub SommaValoriRighe1()
'Come prima cosa riallinea su unica colonna i dati
Range(Sheets("Sheet1").Range("a2"), Sheets("Sheet1").Range("b2").End(xlDown)).Select 'questo se non hai celle vuote nella colonna oppure
'puoi sostituire con la prima area in esame: Range("A2:B13").Select
Selection.Copy
Range("G2").Select 'dove vuoi che inizi la colonna unica e successivamente i totali
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Sheets("Sheet1").Range("d2"), Sheets("Sheet1").Range("e2").End(xlDown)).Select 'oppure Range("D2:E13").Select Stesso ragionamento come per le colonne D ed E
Selection.Copy
Range("G1000").End(xlUp).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Application.CutCopyMode = False
'Poi somma i valori delle celle doppioni-Mi raccomando SCEGLI L'AREA TU e non quella che ti propone
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "Somma Doppioni"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Scegli Area", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub
=SE(VAL.ERRORE(INDICE(A$2:A$6;CONFRONTA(0;INDICE(CONTA.SE(K$1:K1;A$2:A$6&""););0);));INDICE(D$2:D$6;CONFRONTA(0;INDICE(CONTA.SE(K$1:K1;D$2:D$6&""););0););INDICE(A$2:A$6;CONFRONTA(0;INDICE(CONTA.SE(K$1:K1;A$2:A$6&""););0);))
Function myResumeF(ByRef iRan As Range) As Variant
Dim oArr(), I As Long, J As Long, oInd As Long
Dim fRows As Long, iRows As Long
Dim myMatch
'
iRows = iRan.Rows.Count * iRan.Columns.Count / 2
fRows = Application.Parent.Caller.Rows.Count
'
ReDim oArr(1 To 2, 1 To iRows)
For I = 1 To iRan.Rows.Count
For J = 1 To iRan.Columns.Count Step 2
If iRan.Cells(I, J) <> "" Then
myMatch = Application.Match(iRan.Cells(I, J), Application.WorksheetFunction.Index(oArr, 1, 0), False)
If IsError(myMatch) Then
oInd = oInd + 1
oArr(1, oInd) = iRan.Cells(I, J)
oArr(2, oInd) = iRan.Cells(I, J + 1)
Else
oArr(2, myMatch) = oArr(2, myMatch) + iRan.Cells(I, J + 1)
End If
End If
Next J
Next I
If oInd >= fRows Then
ReDim Preserve oArr(1 To 2, 1 To oInd)
Else
ReDim Preserve oArr(1 To 2, 1 To fRows)
End If
If oInd > fRows Then
oArr(1, fRows) = "+" & (oInd - fRows)
ElseIf oInd < fRows Then
For I = oInd + 1 To fRows
oArr(1, I) = "--"
oArr(2, I) = "--"
Next I
End If
myResumeF = Application.WorksheetFunction.Transpose(oArr)
End Function
=myResumef(A2:D20)
=myResumef(A2:B30) '1 sola coppia, A-B
=myResumef(B1:E30) '2 coppie, B-C e D-E
=myResumef(A2:F30) '3 coppie: A-B, C-D, E-F
Torna a Applicazioni Office Windows
Formattzione valori con simbolo triangolini colorati Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 11 |
Aggiornare cella con somma quando aggiungo nuova colonna Autore: marcopont |
Forum: Applicazioni Office Windows Risposte: 1 |
[EXCEL] controllo corrispondenza tra valori con un vincolo Autore: sbs |
Forum: Applicazioni Office Windows Risposte: 9 |
Visitano il forum: Ricky0185 e 25 ospiti