0

我有一个包含列名和行名的表。表是在某些交叉字段中带有“0”-零的字段;所有其他字段都是空的。我想要的是用 A 列(行名)中单元格中的内容替换所有“0”。

表每次可能有不同的大小。

我是 vba 的新手-所以我只需要为每个“0”找到并用同一行中的 vale 替换它,但是可以 A-如何?:-(

4

2 回答 2

0

获取单元格:

Dim StartCell as Range
Set StartCell = Sheet1.Range("A1") //or any coordinate, but I assume you start in A1 (the column with line names and the line with column names)

循环遍历命名的行和列,直到它们为空:

Dim Line as Integer, Column as Integer
Dim LineName as Range, ColumnName as Range

Line = 1 'line index to loop
Column = 1 'column index to loop

Set LineName = StartCell.Offset(Line,0) 'the first line name cell
Set ColumnName = StartCell.Offset(0, Column) 'the first column name cell

Do While (LineName.Value <> "") ' while you have line names, not end of sheet
    Do While (ColumName.Value <> "") ' while you have column names, not end of sheet

        'Check if cell in current line and column has zero value
        If StartCell.Offset(Line, Column).Value = 0 Then
            'change its value for line name
            StartCell.Offset(Line, Column).Value = LineName.Value
        End If

        Column = Column + 1 'go next column index
        Set ColumnName = StartCell.Offset(0,Column) 'get next column name
    Loop

    Column = 1 'reset column for next line loop
    Line = Line + 1 'go next line index
    Set LineName = StartCell.Offset(Line,0) 'get next line name
Loop
于 2013-07-10T12:40:14.163 回答
0

非 VBA 答案:

您可以创建一个公式来进行此操作,然后将公式拖动或复制/粘贴到不同的区域或工作表中。

假设您的工作表从 A1 变为 D4。(作为第 1 行和第 1 列的名称)

拿一些像 G2 这样的单元格并把这个论坛:

= if (B2 = 0; $A2; "")

拖到J4. 因此,您创建了一个具有所需名称的并行表。然后复制该新表并paste special - values only代替原始表。

于 2013-07-10T12:45:32.233 回答