Excel 是否可以根据一行中的文本值更改一行中4列的数字格式?
我的处境很糟糕——任何能为我指明正确方向的帮助都会很有帮助,我将不胜感激 我创建了一个Access进程,它复制一个excel文件,并使用“复制记录集”使用2个记录集的数据对其进行更新。该过程现在通过将“模板工作簿”复制到新文件来创建39个工作簿。每个工作簿至少包含一个选项卡,但通常包含更多选项卡,一个工作簿有20多个选项卡 这一切都是在Access中完成的。它复制“模板”文件,然后运行循环,并使用复制记录集将“模板”工作表复制到每个选项卡 添加选项卡后,它将2个记录集中的数据加载到工作表中。第一个记录集加载一行数据-没问题。但是,第二行加载多行,其数量可能会有所不同 这一切都很好。问题是格式化从D列到G列。 如果C列=收入、成本或毛利(GM),我希望该行的D到G列格式为货币。 如果列C=GM%,那么我希望将列D到G格式化为百分比。 如果列C=Hours,我不必格式化它 我想创建一个函数,在打开工作簿时,根据列C值格式化这些列/行。我知道打开工作簿时会触发一个事件,并且我知道我已经遍历了工作簿中的所有选项卡,所以我希望为每个选项卡运行该函数 可能还有另一个问题——我想我可以在Access中解决这个问题,但是EAC列被导出为文本,应该是数字。现在还不确定是将其导出为文本,还是EXCEL将其视为文本 任何帮助都将不胜感激。提前谢谢 我有图片,但现在还不允许我发布。如果他们愿意帮忙-让我知道,我会尽量把他们发电子邮件给你Excel 是否可以根据一行中的文本值更改一行中4列的数字格式?,excel,vba,Excel,Vba,我的处境很糟糕——任何能为我指明正确方向的帮助都会很有帮助,我将不胜感激 我创建了一个Access进程,它复制一个excel文件,并使用“复制记录集”使用2个记录集的数据对其进行更新。该过程现在通过将“模板工作簿”复制到新文件来创建39个工作簿。每个工作簿至少包含一个选项卡,但通常包含更多选项卡,一个工作簿有20多个选项卡 这一切都是在Access中完成的。它复制“模板”文件,然后运行循环,并使用复制记录集将“模板”工作表复制到每个选项卡 添加选项卡后,它将2个记录集中的数据加载到工作表中。第一
Bob我想出了一种方法,包括了代码 然而,也许有更好的办法,所以我愿意接受建议
Public Sub FormatTaskRows()
Dim Sheet As Object
Dim rngTasks As Range
Dim rngFCells As Range
Dim strTaskEnd As String
Dim ix As Integer
For Each Sheet In Sheets
If Sheet.Name = "Template" Then
Sheet.Visible = xlSheetVeryHidden
Else
Sheet.Visible = xlSheetVisible
Sheet.Activate
strTaskEnd = Range("C44").End(xlDown).Address
Set rngTasks = Range("$C$44:" & strTaskEnd)
'For Each Row In rngTasks
For ix = 1 To rngTasks.Rows.Count
Sheet.Unprotect
If rngTasks.Cells(ix) = "Revenue" Or rngTasks.Cells(ix) = "Cost" Or rngTasks.Cells(ix) = "Gross Margin (GM)" Then
Set rngFCells = Range(ActiveSheet.Name & "!D" & ix + 43 & ":G" & ix + 43)
rngFCells.Select
Selection.NumberFormat = "$#,##0.00"
Else
If rngTasks.Cells(ix) = "GM%" Then
Set rngFCells = Range(ActiveSheet.Name & "!D" & ix + 43 & ":G" & ix + 43)
rngFCells.Select
Selection.NumberFormat = "0.0000%"
End If
End If
Sheet.Protect
Next ix
End If
Next
结束子部分您应该发布代码-始终帮助获得响应。另外,为什么不在创建工作簿时运行格式化呢?这似乎是实现目标的最简单方法。