如何在多个单元全部为真时填充单元格

我有一个Excel文件,在L到V列中用零(0 =否)和1(1 =是)。根据他们在这些列中的答案,我想在Z列中放置一些文本。例如:

0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 

如果所有这些单元都是0,则在Z中放入“Beginner”

 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 

将成为“学习者” – 一路贯穿:

 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 

将是“专家”。

我尝试了IF-THEN-ELSE和SELECT CASE函数的不同变体,但我似乎无法得到任何正确的工作。 我知道我将不得不遍历行(大约有500),但我怎么告诉Excel我想要什么?

忘了提及,数据也可能是这样的

 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 

我有大约50个不同的场景出现。

你可以将答案连接成一个string,并根据这个select你的输出。

 For r = 1 To 500 Answers = "" For c = 12 To 22 Answers = Answers & Cells(r, c) Next c Select Case Answers Case "00000000000" Cells(r, 26) = "Beginner" Case "10000000000" Cells(r, 26) = "Learner" Case "11110000000" Cells(r, 26) = "Sophomore" Case "11111111111" Cells(r, 26) = "Expert" Case Else Cells(r, 26) = "<something else>" End Select Next r 

编辑:根据你的规则有多复杂,你最好使用if-then-elseif-else,因为那样你可以使用Like运算符,它可以让你使用通配符。

 If Answers = "00000000000" Then output = "Beginner" ElseIf Answers = "11111111111" Then output = "Expert" ElseIf Answers Like "1111*" Then output = "Sophomore" Else output = "other" End If 

使用SUM来总结所有行。 然后根据总和适合的范围张贴您的答案。

使用SUM上的CHOOSE函数,它将返回1-11之间的数字,从您的名字列表中select。 填写以下数字为您的类别:

 =CHOOSE(SUM(L2:V2), "Beginner", "Learner", "3", "4", "5", "6", "7", "8", "9", "10", "Expert") 

然后将公式向下复制到所有行中。

如果总数1是重要的,那么你可以这样做:

 For Each rw in Sheets("Sheet1").UsedRange.Rows Select Case Application.Sum(rw.Columns("L:V")) Case 0 rs.Cells(1,26) = "Beginner" Case 1 rs.Cells(1,26) = "Learner" Case 11 rs.Cells(1,26) = "Expert" End Select Next rw 

如果1在特定的地方很重要,那么这个代码将起作用:

 Sub FillZ() Dim wRange As Range Dim resultArray As Variant Dim i As Integer Set wRange = Sheets("Sheet1").Range("A1:Z" & Range("A65536").End(xlUp).Row) resultArray = SpecialConcatenate(workingRange) For i = 1 To wRange.Rows.Count Select Case resultArray(i) Case "00000000000" wRange(i, 26) = "Beginner" Case "10000000000" wRange(i, 26) = "Learner" Case "11111111111" wRange(i, 26) = "Expert" End Select Next i End Sub Function SpecialConcatenate(wRange As Range) As Variant Dim j As Integer, k As Integer Dim resultArray() As Variant ReDim resultArray(1 To wRange.Rows.Count) For j = 1 To wRange.Rows.Count resultArray(j) = "" For k = 1 To 11 resultArray(j) = resultArray(j) & wRange.Cells(j, k + 11).Value Next k Next j SpecialConcatenate = resultArray End Function