How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-wps-excel:data-analysisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- 分析结果必须新建工作表,不修改原始数据
function CL(c){var s="";while(c>0){c--;s=String.fromCharCode(65+(c%26))+s;c=Math.floor(c/26);}return s;}
var wb = Application.ActiveWorkbook;
var srcWs = Application.ActiveSheet;
var srcName = srcWs.Name;
wb.Sheets.Add();
var ws = Application.ActiveSheet;
ws.Name = "数据分析";
ws.Activate();
// 区域 A: 标题
ws.Range("A1").Value2 = "数据分析报告 — " + srcName;
ws.Range("A1").Font.Size = 16;
ws.Range("A1").Font.Bold = true;
ws.Range("A1").Interior.Color = 0x8B4513;
ws.Range("A1").Font.Color = 0xFFFFFF;
// 区域 B: 数据概况
ws.Range("A3").Value2 = "数据概况";
ws.Range("A3").Font.Bold = true;
ws.Range("A4").Value2 = "数据源";
ws.Range("B4").Value2 = srcName;
ws.Range("A5").Value2 = "总行数";
ws.Range("B5").Formula = "=COUNTA('" + srcName + "'!A:A)-1";
// ... 列数、空值数等
// 区域 C: 描述性统计表
// 每个数值列: 均值/中位数/最大/最小/标准差/四分位
| 指标 | 公式 |
|---|---|
| 均值 | =AVERAGE('源表'!B2:B1000) |
| 中位数 | =MEDIAN('源表'!B2:B1000) |
| 标准差 | =STDEV('源表'!B2:B1000) |
| 最大值 | =MAX('源表'!B2:B1000) |
| 最小值 | =MIN('源表'!B2:B1000) |
| 计数 | =COUNTA('源表'!B2:B1000) |
| 空值数 | =COUNTBLANK('源表'!B2:B1000) |
// 环比增长率
ws.Range("C" + r).Formula = "=('" + srcName + "'!B" + r + "-'" + srcName + "'!B" + (r-1) + ")/'" + srcName + "'!B" + (r-1);
ws.Range("C" + r).NumberFormat = "0.0%";
// 占比计算
ws.Range("D" + r).Formula = "='" + srcName + "'!B" + r + "/SUM('" + srcName + "'!B2:B" + lastRow + ")";
ws.Range("D" + r).NumberFormat = "0.0%";
WPS 加载项中不支持 PivotTable API,需手动聚合:
// 按分类列汇总
var groups = {};
for (var r = 2; r <= lastRow; r++) {
var cat = String(ws.Range(CL(catCol) + r).Value2);
var val = Number(ws.Range(CL(valCol) + r).Value2) || 0;
if (!groups[cat]) groups[cat] = { sum: 0, count: 0 };
groups[cat].sum += val;
groups[cat].count++;
}
// 写入汇总表
var keys = Object.keys(groups);
for (var i = 0; i < keys.length; i++) {
ws.Range("A" + (startRow + i)).Value2 = keys[i];
ws.Range("B" + (startRow + i)).Value2 = groups[keys[i]].sum;
ws.Range("C" + (startRow + i)).Value2 = groups[keys[i]].count;
ws.Range("D" + (startRow + i)).Value2 = groups[keys[i]].sum / groups[keys[i]].count;
}
在分析表底部,用文本形式写出关键发现:
var conclusionRow = lastOutputRow + 2;
ws.Range("A" + conclusionRow).Value2 = "分析结论";
ws.Range("A" + conclusionRow).Font.Bold = true;
ws.Range("A" + conclusionRow).Font.Size = 14;
// 结论内容由 AI 根据计算结果生成
ws.Range("A" + (conclusionRow + 1)).Value2 = "1. 总销售额为 XXX 万元,环比增长 XX%";
ws.Range("A" + (conclusionRow + 2)).Value2 = "2. TOP3 品类占总额的 XX%";
npx claudepluginhub claude-office-skills/claude-office-pluginConverts data analysis results into structured reports covering assumptions, findings, validation, limitations, and next steps.
Executes SQL queries, processes spreadsheets, creates data visualizations, and generates automated reports. Useful for data exploration, cleaning, statistical analysis, and insight generation.
Processes data analysis queries by loading workspace context, classifying question complexity from L1-L5, and generating charts, narratives, and metrics from datasets.