这是一段js宏代码,它将excel表格转化为需要的格式
function transformAccountData() { try { // 获取当前工作簿 var workbook = Application.ActiveWorkbook; // 获取源数据表 var sourceSheet = workbook.Sheets.Item("sheet1"); if (sourceSheet == null) { alert("未找到源工作表"); return; } // 获取或创建目标表 var targetSheet; try { targetSheet = workbook.Sheets.Item("账号申请信息表"); } catch (e) { targetSheet = workbook.Sheets.Add(null, workbook.Sheets(workbook.Sheets.Count)); targetSheet.Name = "账号申请信息表"; } // 清空目标表(保留格式) targetSheet.Cells.ClearContents(); // 写入目标表标题 var headers = ["序号", "姓名", "所属单位编码","所需开通权限","手机号", "开通账号"]; // 设置标题行格式 for (var h = 0; h < headers.length; h++) { var cell = targetSheet.Cells(1, h+1); cell.Value2 = headers[h]; cell.Interior.Color = RGB(91, 155, 213); // 蓝色背景 cell.Font.Color = RGB(0, 0, 0); // 白色文字 cell.Font.Bold = true; cell.HorizontalAlignment = -4108; // 居中 cell.VerticalAlignment = -4108; cell.Borders.LineStyle = 1; // 实线边框 cell.Borders.Weight = 2; // 细线 } // 获取源数据最后一行 var lastRow = sourceSheet.Cells.Find("*", null, null, null, 1, 2).Row; var sourceData = []; // 逐行读取源数据(从第3行开始) for (var i = 3; i <= lastRow; i++) { var rowData = []; for (var j = 1; j <= 11; j++) { // A-K列 var cellValue = sourceSheet.Cells(i, j).Value2; rowData.push(cellValue != null ? cellValue : ""); } sourceData.push(rowData); } var outputData = []; var sequence = 1; for (var i = 0; i < sourceData.length; i++) { var row = sourceData[i]; // 获取字段(全部转为字符串) var name = String(row[1] || ""); var orgCode = String(row[7] || ""); var phone = String(row[6] || ""); var pcAccount = String(row[8] || ""); // 补足8位 var iAccount = String(row[9] || ""); var accountScope = (row[10] || "").toString().trim(); // 规则判断 if (pcAccount !== iAccount && accountScope === "PC端和app端") { outputData.push([sequence++, name, orgCode, "1,2", phone, pcAccount]); outputData.push([sequence++, name, orgCode, "3", phone, iAccount]); } else if (pcAccount === iAccount && accountScope === "PC端和app端") { outputData.push([sequence++, name, orgCode, "1,2,3", phone, pcAccount]); } else if (accountScope === "PC端") { outputData.push([sequence++, name, orgCode, "1,2", phone, pcAccount]); } else if (accountScope === "app端") { outputData.push([sequence++, name, orgCode, "3", phone, iAccount]); } } // 写入目标表(带格式设置) for (var j = 0; j < outputData.length; j++) { var rowData = outputData[j]; var targetRow = j + 2; for (var col = 1; col <= 6; col++) { var cell = targetSheet.Cells(targetRow, col); // 通用格式设置 cell.HorizontalAlignment = -4108; // 水平居中 cell.VerticalAlignment = -4108; // 垂直居中 cell.Borders.LineStyle = 1; // 实线边框 cell.Borders.Weight = 2; // 细线 // 对文本型列设置文本格式 if (col >= 2 && col <= 6) { // B-F列 cell.NumberFormat = "@"; } // 写入数据 cell.Value2 = rowData[col-1]; } } // 调整列宽 targetSheet.Columns.AutoFit(); alert("数据转换完成!共转换 " + outputData.length + " 条记录。"); } catch (e) { alert("发生错误: " + e.message + "\n行号: " + e.lineNumber); } } // RGB颜色转换函数 function RGB(r, g, b) { return r + (g << 8) + (b << 16); }

浙公网安备 33010602011771号