我希望将垂直细胞的值与horizental中的细胞进行比较,然后放入" X"关于互动
这就是我所做的:
Set c = ThisWorkbook.Worksheets("harnwire")
For j = 2 To 100 Step 1
For i = 2 To 900 Step 1
If c.Cells(i, 1).Value = c.Cells(1, j).Value Then
c.Cells(i, j).Value = "X"
Else
c.Cells(i, j).Value = " "
答案 0 :(得分:1)
只是要清楚 - 抱歉,但我的设置不允许我 看到上传到这个网站的图片,因此我不能 看你的照片 - 你的代码建议你想要的是什么 列“A”中的900行与第1行中的100列相对应。 那是对的吗。如果单元格之间存在匹配 列“A”和第1行中的单元格,然后您需要结点 两者之间的单元格显示“X”。这是对的吗?
如果是这样,那么你的逻辑是正确的。也许你的语法 已关闭。试试这个。
Sub sdftgyhj()
Set c = ThisWorkbook.Worksheets("harnwire")
For j = 2 To 100 Step 1
For i = 2 To 900 Step 1
If c.Cells(i, 1).Value = c.Cells(1, j).Value Then
c.Cells(i, j).Value = "X"
Else
c.Cells(i, j).Value = " "
End If
Next i
Next j
End Sub
答案 1 :(得分:1)
该行
If c.Cells(i, 1).Value = c.Cells(1, j).Value Then
似乎不正确。因为这会将列A
与第1行中的标题进行比较。此行与
If c.Cells(i, "A").Value = c.Cells(1, j).Value Then
然而,根据图片,您似乎更感兴趣的是将另一列与标题进行比较。所以,也许尝试这样的事情:
If c.Cells(i, "G").Value = c.Cells(1, j).Value Then
(或任何正确的列)。
所以,将所有这些结合在一起:
Option Explicit
Public Sub tmpSO()
Dim ws As Worksheet
Dim rowNumber As Long, columnNumber As Long
Set ws = ThisWorkbook.Worksheets("harnwire")
For columnNumber = 2 To 100
For rowNumber = 2 To 900
If c.Cells(rowNumber, "G").Value = c.Cells(1, columnNumber).Value Then
c.Cells(rowNumber, columnNumber).Value = "X"
Else
c.Cells(rowNumber, columnNumber).Value = vbNullString
End If
Next rowNumber
Next columnNumber
End Sub
以下代码解决了提供的评论:
(1)开始与列H
和中的标题进行比较
(2)如果两个单元格无法进行比较,则处理错误,因为任何一个单元格都包含错误。
Option Explicit
Public Sub tmpSO()
Dim ws As Worksheet
Dim rowNumber As Long, columnNumber As Long
Set ws = ThisWorkbook.Worksheets("harnwire")
For columnNumber = 8 To 100
For rowNumber = 2 To 900
If IsError(c.Cells(rowNumber, "G").Value) Or IsError(c.Cells(1, columnNumber).Value) Then
c.Cells(rowNumber, columnNumber).Value = "err"
Else
If c.Cells(rowNumber, "G").Value = c.Cells(1, columnNumber).Value Then
c.Cells(rowNumber, columnNumber).Value = "X"
Else
c.Cells(rowNumber, columnNumber).Value = vbNullString
End If
End If
Next rowNumber
Next columnNumber
End Sub
请告诉我这是否符合预期。