2

我有一个 Excel 文件,其中包含二维数组中的一些数据。

Excel 文档

我想要做的是创建一个宏,它可以用表列的标题(toto、tata 或titi)替换星号'*'。

4

3 回答 3

5

像这样?

Option Explicit

Sub Sample()
    Dim oRange As Range, aCell As Range, bCell As Range
    Dim ws As Worksheet
    Dim ExitLoop As Boolean

    On Error GoTo Whoa

    '~~> Change this to the relevant sheet name
    Set ws = Worksheets("Sheet1")

    Set oRange = ws.Cells

    Set aCell = oRange.Find(What:="~*", LookIn:=xlValues, _
                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                MatchCase:=False, SearchFormat:=False)

    If Not aCell Is Nothing Then
        Set bCell = aCell
        '~~> Assuming that the headers are in row 2
        aCell.Value = Cells(2, aCell.Column)
        Do While ExitLoop = False
            Set aCell = oRange.FindNext(After:=aCell)

            If Not aCell Is Nothing Then
                If aCell.Address = bCell.Address Then Exit Do
                '~~> Assuming that the headers are in row 2
                aCell.Value = Cells(2, aCell.Column)
            Else
                ExitLoop = True
            End If
        Loop
    End If
    Exit Sub
Whoa:
    MsgBox Err.Description
End Sub
于 2012-05-23T15:03:50.230 回答
3

仅使用工作表工具(无 VBA):

  • Ctrl-F
  • 找到什么 = ~*
  • Find All
  • Ctrl-A选择所有查找结果
  • Close查找对话框
  • 假设您的标题在第二行,并假设光标落在 C 列某处(我做了两次,YMMV),输入公式=C$2
  • Ctrl-Enter
于 2012-05-23T15:38:51.643 回答
0

这是我想出的一个简单方法。

i = 3
While Cells(2, i).Value <> ""
    Range(Cells(3, i), Cells(6, i)).Select

    Selection.Replace What:="~*", Replacement:=Cells(2, i).Value, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    i = i + 1
Wend

Cells(x,y):x 表示行,y 表示列。

可以使用更精细的范围选择来代替这个基本的范围选择来让代码选择适当的范围。

要在 excel 中实现,只需打开代码窗口并将此代码粘贴到所需的宏/子程序中。

于 2012-05-23T15:21:20.333 回答