在Excel中的单个单元格中创build多个值

我想根据一定的条件在Excel表格中的单个单元格中input多个值,如工作簿中有多个工作表,然后如果任何以名称TC开头的工作表包含颜色,那么我必须input信息在Excel工作簿的“自述”部分中另有一个工作表。 我的代码的问题是,它不显示包含着色的唯一表单…假设工作表“TC_1”和“TC_3”在任何单元格中都包含颜色,则其显示输出为“; TC_3; TC_3; TC_3;” 虽然这里的预期产出是“TC_1; TC_3”。

这里是代码:

Sub ErrorInSheet() Dim Row Dim Names As String Names = "" For Row = 2 To tsheet.UsedRange.Rows.Count For Chkcol = 1 To tsheet.UsedRange.Columns.Count If tsheet.Cells(Row, Chkcol).Interior.ColorIndex = 3 Then Names = Names & ";" & tsheet.Name End If Next Next Row Sheets("Read Me").Cells(13, 5).Value = Names End Sub Sub iterateSheets() For Each sheet1t In Worksheets If InStr(1, sheet1t.Name, "TC") Then Set tsheet = sheet1t Call ErrorInSheet End If Next End Sub 

我认为这会对你有用 – 我testing了它并为我工作。

 Sub FindErrors() Dim sht As Worksheet, cl As Range, shtNames As String shtNames = vbNullString For Each sht In Worksheets If Left$(sht.Name, 2) = "TC" Then For Each cl In sht.UsedRange.Cells If cl.Interior.ColorIndex = 3 Then shtNames = IIf(shtNames = vbNullString, sht.Name, shtNames & ";" & sht.Name) End If Next cl End If Next sht Worksheets("Read Me").Cells(13, 5) = shtNames End Sub 

笔记:

  1. 我已经明确地声明了variables
  2. 我假设你的所有表都以“TC”开头,所以我使用了Left$但是如果你喜欢,你可以使用InStr
  3. 我已经使用三元IIF声明来阻止你获得领先;
  4. 我已经把所有的代码放在一个Sub但是如果你喜欢,你可以把它分开