父上大人讓我給他做一個方便在excel里面畫曲線的東西。根據(jù)sheet1中的數(shù)據(jù)畫出在sheet2中劃出曲線。
效果:
sheet1
sheet2
首先不能用繪制折線圖的方法,因為數(shù)據(jù)太多了,用折線圖反而不直觀。
查了些資料開了些腦洞之后覺得還是使用宏最方便。
宏的快捷鍵設(shè)置
查看宏——>選項
加入了比例尺之后的代碼:
Sub 宏1()
'還是要在sheet1中,選中相關(guān)的那個單元格
'Sheet1.Cells(3,2)——表1第3行第2格
'Sheet2.Rows.RowHeight——列高
Dim BILICHI As Double '比例尺
BILICHI = 10
Dim DATE0 As Integer '定義橫向偏移
DATE0 = 0
Dim ZERO As Integer '定義零點所在的行
ZERO = 11 * BILICHI
Dim row2 As Integer '直線終止點y = 被選中單元格中的值
row2 = ZERO - ActiveCell.Value
Dim column As Integer '直線終止點x = 被選中單元格的行號+橫向偏移
comlumn = ActiveCell.row + DATE0
Dim row1 As Integer '直線起始點y = 被選中的單元格的上一個數(shù)據(jù)的值
row1 = ZERO - Sheet1.Cells(ActiveCell.row - 1, ActiveCell.column).Value
Set myDocument = Worksheets(2)
With myDocument.Shapes.AddLine(Sheet2.Cells(row1, comlumn - 1).Left, Sheet2.Rows.RowHeight * row1 / BILICHI, Sheet2.Cells(row2, comlumn).Left, Sheet2.Rows.RowHeight * row2 / BILICHI).Line '畫直線
.ForeColor.RGB = RGB(255, 0, 0) '設(shè)置顏色
End With
End Sub
這段代碼的缺陷就是使用宏的時候必須位于sheet1,選中相關(guān)的那個單元格。
image.png
由于父上大人畫圖的時候只需要增加最后一天的,所以由設(shè)計了另一版代碼(每次只能畫最后一條線)。
Sub 宏2()
'Sheet1.Cells(3,2)——表1第3行第2格
'Sheet2.Rows.RowHeight——列高
'Sheet1.UsedRange.Rows.Count——sheet1中存在的數(shù)據(jù)行數(shù)
Dim BILICHI As Double '比例尺
BILICHI = 10
Dim DATE0 As Integer '定義橫向偏移
DATE0 = 0
Dim ZERO As Integer '定義零點所在的行
ZERO = 11 * BILICHI
Dim row2 As Integer '直線終止點y = 被選中單元格中的值
row2 = ZERO - Sheet1.Cells(Sheet1.UsedRange.Rows.Count, Sheet1.UsedRange.Columns.Count).Value
Dim column As Integer '直線終止點x = 被選中單元格的行號+橫向偏移
comlumn = Sheet1.UsedRange.Rows.Count + DATE0
Dim row1 As Integer '直線起始點y = 被選中的單元格的上一個數(shù)據(jù)的值
row1 = ZERO - Sheet1.Cells(Sheet1.UsedRange.Rows.Count - 1, Sheet1.UsedRange.Columns.Count).Value
Set myDocument = Worksheets(2)
With myDocument.Shapes.AddLine(Sheet2.Cells(row1, comlumn - 1).Left, Sheet2.Rows.RowHeight * row1 / BILICHI, Sheet2.Cells(row2, comlumn).Left, Sheet2.Rows.RowHeight * row2 / BILICHI).Line '畫直線
.ForeColor.RGB = RGB(50, 0, 255) '設(shè)置顏色
End With
End Sub
這樣兩個版本應(yīng)該夠用了。
其他 · Excel查看代碼功能
除了使用宏之外,右鍵sheet——>查看代碼,也可以對excel批量處理進行編程,比如選擇在鼠標雙擊或鼠標右鍵或改變選擇的單元格的時候發(fā)生動作。
又其他 · Excel與繪圖
查資料的時候在網(wǎng)上看到了這個一個圖片:
98701426_17.gif
鵝妹子嚶。
突然想到有了每條線條的起始點終止點位置,通過宏 或者右鍵sheet——>查看代碼 即使是完全不懂繪畫的程序員也能復(fù)制出這一幅畫。
或許矢量圖就是這么個思想吧。