嘿伙计们,我有一份雇主名单,显示Excel 2003 workbok中每dd/mm/yyyy的加固位移.
随着下一个宏我进入同一个文档,每个人的所有GP乘以4.83,表示新列中的结果.
Option Explicit
Sub Resumen()
'------------------
'by Cacho Rodríguez
'------------------
Dim C As Range, Mat, Q&, i&, R&
On Error Resume Next
Set C = Application.InputBox("Selecciona la celda superior izquierda (CODIGO NÓMINA)" & vbLf & _
"de tu rango de datos." & vbLf & vbLf & "(por ejemplo: Full1!$A$1)", Type:=8)
If C Is Nothing Then Exit Sub
On Error GoTo 0
Application.ScreenUpdating = False
With C.Worksheet
Mat = .Range(C, .Cells(.Rows.Count, 1 + C.Column).End(xlUp).Offset(, 1))
End With
Q = UBound(Mat)
R = 1
Mat(R, 1) = Mat(1, 1)
Mat(R, 2) = Mat(1, 2)
Mat(R, 3) = "GP"
For i = 2 To Q
Select Case True
Case Mat(i, 1) = ""
Mat(R, 3) = 1 + Mat(R, 3)
Case IsNumeric(Mat(i, 1))
R = 1 + R
Mat(R, 1) = 0 + Mat(i, 1)
Mat(R, 2) = Mat(i, 2)
Mat(R, 3) = 0
End Select
Next
C.Worksheet.[g1].CurrentRegion.Delete xlUp
With C.Worksheet.[g1].Resize(R, 3)
Application.Goto .Cells(1).Offset(, -3), True
.Value = Mat
.Columns(4) = "=4.83 * " & .Cells(1, 3).Address(0, 0)
.Cells(1, 4) = "Total"
.Resize(, 4).Columns.AutoFit
End With
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
我现在的问题是我不仅需要新列中的所有GP,我还需要新列中的所有GF以及"总列"中GP + GF*4.83的结果.但是我需要每个月GP和GF分开,以及每个雇主每月的总数.
例如,下一张图片似乎有些东西:
我怎样才能做到这一点?
我花了一点时间弄清楚你想做什么.如果我理解正确:您的第3张图片是第1张图片中的数据摘要,您希望它还包含第2张图片中的数据.
如果这将是一个持续的报告,那么您的第一步应该是更好地组织数据,然后这将使您和其他人更容易在Excel中使用这些数据.
如果您的数据组织如下:
...然后只需点击几下,您就可以自动显示如下数据:
...并且无论何时添加或更改数据,只需单击1次即可更新此表.创建此数据透视表只需几分钟(现在数据已正确组织).
一个就位,只需点击几下即可更改数据透视表,以便以不同方式即时报告数据.
图表也是如此(创建需要几分钟时间,并在数据更改时自动更新)和各种其他Excel功能:
通过使用VBA创建报告,您正在以"艰难的方式"做事 - 但是对于不了解Excel内置功能的用户来说,这是非常常见的.但正如我所说的那样,以更合理的方式组织数据的第一步(基本上,"每行一条记录",行之间没有子标题,就像Nom样本数据一样.)
如果您想使用我用于示例的工作簿,您可以从Jumpshare下载它.(它可能无法在JumpShare网站上正确显示(因为图表等),但单击Download按钮下载[无宏] .XLSX文件.
Microsoft:在工作表上组织和格式化数据的准则
Hubspot:如何在Excel中创建数据透视表:循序渐进教程(带视频)
Office.com:创建数据透视表以分析工作表数据
GCFLearnFree:数据透视表简介(带练习工作簿)