دیوید در حال اضافه کردن جمعهای فرعی (برگه دادههای نوار، در گروه Outline) به کاربرگهای بزرگ بود و به دنبال راهی برای انتقال سلولهای فرعی به سلولهای مختلف بود. به عنوان مثال، فرض کنید وقتی اکسل جمعهای فرعی خودکار را اضافه میکند، آنها در ستون S اضافه میشوند و فرمول SUBTOTAL که توسط اکسل اضافه میشود به محدوده سلولهای ستون S اشاره دارد. دیوید میخواست فرمولهای SUBTOTAL (و فقط آن فرمولها) را به خارج از آن منتقل کند. ستون S تا ستون T، و فرمول ها همچنان به جزئیات ستون S اشاره دارند.
یکی از گزینهها این است که فرمولهای SUBTOTAL را یکی یکی به مکانهای مورد نظر بروید و منتقل کنید. (شما می توانید از Ctrl+X و Ctrl+V برای جابجایی سلول ها استفاده کنید، به جای اینکه از Ctrl+C و Ctrl+V صرفاً کپی هایی از سلول ها ایجاد کنید.) اگر کاربرگ ها بزرگ و با جمع های فرعی زیاد باشند، این می تواند بسیار خسته کننده شود. به سرعت.
Tedium در اکسل اغلب انگیزه اصلی برای ایجاد یک ماکرو است. این مورد نیز از این قاعده مستثنی نیست. می توان یک ماکرو ایجاد کرد که حرکت واقعی فرمول های SUBTOTAL را انجام دهد. به مثال زیر توجه کنید:
Sub MoveSubtotals()
Dim rCell As Range
Dim rng As Range
Dim iCol As Integer
Dim iOffset As Integer
iCol = 19 19 is Column S
iOffset = 1 Positives go right, negatives go left
Set rng = Intersect(Selection.CurrentRegion, Columns(iCol))
For Each rCell In rng
If InStr(rCell.Formula, "SUBTOTAL") Then
rCell.Offset(0, iOffset).Formula = _
rCell.Formula
rCell.ClearContents
End If
Next
End Sub
این مثال با بررسی هر سلول انتخاب شده در ستون S کار می کند. اگر فرمول موجود در سلول حاوی کلمه SUBTOTAL باشد، فرمول یک ستون به سمت راست، در ستون T کپی می شود و از سلول در ستون S حذف می شود. می توانید تغییر دهید. فاصله ای به چپ یا راست که جمع های فرعی به سادگی با تغییر مقدار اختصاص داده شده به متغیر iOffset منتقل می شوند.