在VBA中分开几个月

kes*_*lol 2 excel vba

嘿伙计们,我有一份雇主名单,显示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分开,以及每个雇主每月的总数.

例如,下一张图片似乎有些东西:

例

我怎样才能做到这一点?

ash*_*awg 7

我花了一点时间弄清楚你想做什么.如果我理解正确:您的第3张图片是第1张图片中的数据摘要,您希望它还包含第2张图片中的数据.

如果这将是一个持续的报告,那么您的第一步应该是更好地组织数据,然后这将使您和其他人更容易在Excel中使用这些数据.

如果您的数据组织如下:

截图

...然后只需点击几下,您就可以自动显示如下数据:

截图

...并且无论何时添加或更改数据,只需单击1次即可更新此表.创建此数据透视表只需几分钟(现在数据已正确组织).

一个就位,只需点击几下即可更改数据透视表,以便以不同方式即时报告数据.

数据透视表

图表也是如此(创建需要几分钟时间,并在数据更改时自动更新)和各种其他Excel功能:

图表示例

通过使用VBA创建报告,您正在以"艰难的方式"做事 - 但是对于不了解Excel内置功能的用户来说,这是非常常见的.但正如我所说的那样,以更合理的方式组织数据的第一步(基本上,"每行一条记录",行之间没有子标题,就像Nom样本数据一样.)

如果您想使用我用于示例的工作簿,您可以从Jumpshare下载它.(它可能无法在JumpShare网站上正确显示(因为图表等),但单击Download按钮下载[无宏] .XLSX文件.


更多信息: