根据另一个单元格的内容将格式应用于单元格的一部分

DPC

我正在尝试根据另一个单元格的内容将特定格式应用于单元格的一部分。

我是 VBA 初学者,并且能够根据字符串中的位置将不同的格式应用于单元格的某些部分,但不能再进一步了。

表 1,F 列包含 SKU 字符串(以逗号分隔)。一旦对该产品执行了检查,我想将单个 SKU 设为粗体。我将数据导入到表 2,其中 D 列包含已检查产品的 SKU。

所以总而言之,我希望第 1 页 F 列字符串中的单个 SKU 为粗体,基于第 2 页 D 列中该 SKU 的存在

任何人都可以协助提供必要的 VBA 代码吗?如有任何帮助,我将不胜感激。

(我已经搜索了很多论坛,到目前为止还没有找到答案)

编辑:我找到了以下内容,并且可以使用它。它基于设置变量,而不是动态的:

Sub test()

    For row_num = 1 To 13

        'Cell contents
        cell_text = Cells(row_num, 1)

        'Same contents split into three parts and saved in an array
        text_array = Split(cell_text, " ")

        'Length of part 1
        length_1 = Len(text_array(0))

        'Length of part 2
        length_2 = Len(text_array(1))

        'Set ITALICS for Part 1
        Cells(row_num, 1).Characters(1, length_1).Font.Color = vbGreen

        'Set BOLD for Part 2
        Cells(row_num, 1).Characters(length_1 + 2, length_2).Font.Bold = 
        True

    Next

End Sub

这仍然是一个假设的问题,但两列内容的一个很小的例子在以下文件中

示例数据

合资企业

好的,所以如果理解正确并根据您的文本“总而言之,我希望第 1 页 F 列中的字符串中的单个 SKU 为粗体,基于第 2 页 D 列中该 SKU 的存在”您想要:

  • 循环遍历 Sheets(2) 上 D 列中的行。
  • 在 Sheets(1) 的 F 列中查找任何匹配项。
  • 在字符串中突出显示(粗体文本)该数字。

我会尽力让你朝着正确的方向前进:

1)。首先,您希望动态地遍历 Sheets(2) 上 D 列中的所有行。有很多方法可以做到这一点,但我个人喜欢使用.UsedRange. 例如:

Dim CL As Range
For Each CL In Sheets(2).UsedRange.Columns(4).Rows
    'Your code Part 2
Next CL

2)。现在您必须在 Sheets(1) 的 F 列中找到这些值的匹配项。一个聪明/快速的方法是利用.FindNext查看价值部分。在行动中,这看起来像这样:

Dim CLL as Range
Dim FirstAddress as String
With Sheets(1).Columns(6)
    Set CLL = .Find(What:=CL.Value, LookIn:=xlValues, Lookat:=xlPart)
    If Not CLL Is Nothing Then
        FirstAddress = CLL.Address
        Do
            'You code Part 3
            Set CLL = .FindNext(CLL)
        Loop While Not CLL Is Nothing And CLL.Address <> FirstAddress
    End If
End With

3)。现在我们正在寻找包含我们正在寻找的值的适当单元格,我们需要确定我们的值在整个字符串中的位置。我们可以使用一些方便的东西来调用.InStr. 这个函数的作用是确定我们的值在整个字符串中的第一个字符的位置。在实践中,它看起来像这样:

Dim POS as Long
POS = InStr(1, CLL.Value, CL.Value)

“1”表示我们要从字符串中的哪个位置开始搜索。CLL.Value 是我们查找的整个字符串,使 CL.Value 成为我们的搜索值。

4)。现在我们可以指示字符串的开始位置,并且我们想知道搜索值的长度,我们可以使用该.Len函数生成数值。

=Len(CL.Value)

5)。差不多吧?只需要使用.Characters. Bold我们可以设置一个设置True它非常好,使用方式如下:

CLL.Characters(POS, Len(CL.Value)).Font.Bold = True

POS这里用作我们的起始位置,而LEn(CL.Value)显然是我们需要的粗体长度。

6). 我们到了。如果我们将所有这些拼凑在一起:

Sub CreateBold()

Dim CL As Range, CLL As Range
Dim FirstAddress As String
Dim POS As Long

For Each CL In Sheets(2).UsedRange.Columns(4).Rows
    With Sheets(1).Columns(6)
        Set CLL = .Find(What:=CL.Value, LookIn:=xlValues, Lookat:=xlPart)
        If Not CLL Is Nothing Then
            FirstAddress = CLL.Address
            Do
                POS = InStr(1, CLL.Value, CL.Value)
                CLL.Characters(POS, Len(CL.Value)).Font.Bold = True
                Set CLL = .FindNext(CLL)
            Loop While Not CLL Is Nothing And CLL.Address <> FirstAddress
        End If
    End With
Next CL

End Sub

希望这确实回答了您的问题,并且已经足够清楚可以理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

修改可伸缩单元格一部分的格式

如何将一个单元格中的一部分字符串替换为另一单元格中的字符串?

如何部分匹配单元格与另一个部分单元格

将单元格的值用作宏的一部分

Excel:将公式应用于另一个公式中列中的每个单元格

将IF条件应用于3行,如果满足条件,则返回另一个单元格的另一个值

减去单元格的一部分

更改Excel Forumla的一部分以包含来自另一个单元格的数据

Python / gspread-根据另一个单元格的内容更改单元格的内容

根据另一个单元格的内容为单元格分配值-Excel

Excel公式将一个公式应用于引用调用和上方的单元格,并将另一个公式应用于下方的单元格

如何将条件格式(如果单元格在另一个范围内)应用于单元格范围

Excel-根据另一个单元格的一部分计算特定值

将单元格的一部分更改为粗体

根据另一个单元格的部分内容加上“模糊查找”视频来更改一个单元格的值?

根据此单元格值格式化另一个单元格

如何设置一个公式,该公式将根据单元格中的一部分文本返回某个值?

Excel:将单元格格式中显示的文本集识别为单元格文本的一部分

Excel 2016公式仅使用另一个下拉列表单元格的一部分吗?

根据该单元格和另一个单元格的值更改单元格的格式

将单元格的一部分与另一列进行比较

Excel向导:如何创建一个公式,以将数字的一部分乘以一个单元格,另一部分乘以另一个

将一个单元格中的字符串(的一部分)添加到同一系列中的另一个单元格中,然后遍历整个列

将集合视图中的单元格移到另一部分的最后一个单元格之外不起作用

如何根据Excel中的另一个单元格值格式化单元格?

VBA,如何在清除作为现有宏一部分的另一个单元格后清除一个单元格

根据另一个单元格的单元格颜色更改单元格颜色 excel 2016

从单元格读取 JSON 数组并将最后一个对象的一部分写入同一行中的另一个单元格

如何遍历列表以查看列表中的任何值是否与另一个单元格中的值的一部分匹配?