把我写一个vba代码,从sheet2读取数据,在sheet1的B2单元格绘制sparkline,同时要用标记处出最大值和最小值
时间: 2023-12-07 09:02:13 浏览: 35
以下是一个简单的VBA代码来实现您的要求:
```VBA
Sub DrawSparkline()
Dim dataRange As Range
Dim sparklineRange As Range
Dim maxVal As Variant, minVal As Variant
Dim maxIdx As Long, minIdx As Long
'设置数据范围和Sparkline范围
Set dataRange = Sheets("Sheet2").Range("A1:A10") '这里假设数据范围是A1:A10
Set sparklineRange = Sheets("Sheet1").Range("B2")
'绘制Sparkline
sparklineRange.SparklineGroups.Add Type:=xlLineMarkers, SourceData:=dataRange
'获取最大值和最小值
maxVal = Application.WorksheetFunction.Max(dataRange)
minVal = Application.WorksheetFunction.Min(dataRange)
'获取最大值和最小值在数据中的索引
maxIdx = Application.WorksheetFunction.Match(maxVal, dataRange, 0)
minIdx = Application.WorksheetFunction.Match(minVal, dataRange, 0)
'在Sparkline上标记最大值和最小值
sparklineRange.SparklineGroups(1).Points(maxIdx).MarkerStyle = xlMarkerStyleTriangle
sparklineRange.SparklineGroups(1).Points(minIdx).MarkerStyle = xlMarkerStyleTriangle
End Sub
```
这个代码假设您的数据范围是Sheet2的A1:A10,Sparkline范围是Sheet1的B2。您可以根据自己的实际情况修改这些范围。此外,代码会使用内置函数`Max`和`Min`来获取最大值和最小值,并使用`Match`函数来获取它们在数据中的索引。最后,代码会在Sparkline上标记最大值和最小值。