Last active
February 1, 2018 18:13
-
-
Save martinctc/ad4e4d8dead81f826ff0002265042571 to your computer and use it in GitHub Desktop.
[Scatter Plotter] Formats your data for plotting scatter diagrams in #Excel
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Option Explicit | |
Sub ScatterPlotter() | |
'This VBA Excel code formats a three-column table (with header, data labels on lefter-most column) into a format suitable for creating a scatter diagram in Microsoft Excel / PowerPoint. | |
If MsgBox("When you begin, ensure that: (1) Col A is populated with desired horizontal labels, begin from A2 (downwards); (2) Col B is populated with desired x-axis values, begin from B2 (downwards); (3) Col C is populated with desired y-axis values, begin from C2 (downwards). Do you wish to continue?", vbYesNo) = vbNo Then Exit Sub | |
Dim activewb As Workbook | |
Dim origin_sheet As String | |
Dim oldsheet, newsheet As Worksheet | |
Dim i, n, m, CountBlank As Integer | |
Dim Cell As String | |
Dim Continue As Boolean | |
Application.ScreenUpdating = False | |
Continue = True | |
Set activewb = Application.ActiveWorkbook | |
origin_sheet = activewb.ActiveSheet.Name | |
'activewb.Worksheets(origin_sheet).Copy After:=Worksheets(origin_sheet) | |
'ActiveSheet.Name = "Formatted" | |
activewb.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Formatted" | |
Set newsheet = activewb.Sheets("Formatted") | |
Set oldsheet = activewb.Sheets(origin_sheet) | |
oldsheet.Activate | |
n = 1 | |
CountBlank = 0 | |
Do While Continue = True | |
Cell = Cells(n, 1).Value | |
If Cell = Empty Then | |
CountBlank = CountBlank + 1 | |
Else: CountBlank = 0 | |
End If | |
If CountBlank > 30 Then Continue = False | |
n = n + 1 | |
Loop | |
m = n - CountBlank - 1 | |
Debug.Print CountBlank | |
Debug.Print n | |
Debug.Print m | |
'Update all the worksheet names below as appropriate (in double quotations) | |
'Check cell locations are correct before running macro | |
For i = 2 To m | |
'Deal with horizontal headers | |
newsheet.Cells(1, i).Value = oldsheet.Cells(i, 1) | |
'Deal with diagonal data in scatter diagram | |
newsheet.Cells(i, i).Value = oldsheet.Cells(i, 3) | |
'Deal with first column in scatter diagram | |
newsheet.Cells(i, 1).Value = oldsheet.Cells(i, 2) | |
Next i | |
newsheet.Activate | |
Range(Cells(2, 1), Cells(m, m)).Style = "Percent" | |
MsgBox "Yup, that's done" | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment