【发布时间】:2021-07-21 10:50:39
【问题描述】:
我有一个 Google 表格文件,其中存储了不同区域(后、前、左、右)的不同汽车的油漆厚度值。然后将所有内容汇总在散点图中,按车龄(X 轴)显示油漆厚度(Y 轴)。
每个区域都有它自己的系列,它给出的是那辆或每辆汽车,它会在汽车的年龄值上创建一条垂直的点线(序列号只是一个标签)。每个点都表示相应区域的油漆厚度,其位置在 Y 轴上。
我正在根据每个区域报告的损坏情况更改单元格的背景颜色。我希望散点图中每个对应的点都具有相同的颜色,而不是一一着色。
(我不能包含任何链接/屏幕截图,因为这是机密数据)
例子:
| SerialNumber | AGE | ZONE1 | ZONE2 | ZONE3 | ZONE4 |
|---|---|---|---|---|---|
| 42 | 15 | 178 | 210 | 246 | 143 |
序列号 42 是 15 个月大。它的左侧有 246 的油漆厚度,并且已经报告了损坏。我将包含 246 的单元格着色为红色,这会改变散点图中相应点的颜色。
脚本必须将散点图中的每个点与其对应的单元格相关联,获取单元格的背景颜色并根据它设置点的颜色。
我无法为整个系列着色,因为每种颜色都需要特定于一辆车的一个区域
这个文件曾经是一个 Excel 文件,我找到了一个 VBA 宏可以做到这一点,但我的公司正在切换到 Gsuite,我对它还不够熟悉,无法翻译宏。
这是 VBA 代码:
Sub CellColorsToChart()
'Update by Extendoffice
Dim xChart As Chart
Dim I As Long, J As Long
Dim xRowsOrCols As Long, xSCount As Long
Dim xRg As Range, xCell As Range
On Error Resume Next
Set xChart = ActiveSheet.ChartObjects("Chart 1").Chart
If xChart Is Nothing Then Exit Sub
xSCount = xChart.SeriesCollection.Count
For I = 1 To xSCount
J = 1
With xChart.SeriesCollection(I)
Set xRg = ActiveSheet.Range(Split(Split(.Formula, ",")(2), "!")(1))
If xSCount > 4 Then
xRowsOrCols = xRg.Columns.Count
Else
xRowsOrCols = xRg.Rows.Count
End If
For Each xCell In xRg
.Points(J).Format.Fill.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
.Points(J).Format.Line.ForeColor.RGB = ThisWorkbook.Colors(xCell.Interior.ColorIndex)
J = J + 1
Next
End With
Next
End Sub
【问题讨论】:
标签: google-apps-script scatter-plot google-workspace