我正在寻找一种循环遍历表格每行第三列的方法。
如果该单元格为空白,则应该遮蔽整行
如果该单元格被占用,它应该查找任何空格并用单个#
替换所有空格(例如123 abc
变为123#abc
)。
它不应该在表的标题行上运行。
一些随机物品 -
工作表名称为Quote
表名是QuoteTable
阴影应为RGB(255,248,220)
表中的行数总是不同,但宏将始终检查表的第三列的内容,该列的名称为Model #
。
感谢您的回复,我会尝试每一个,同时我想出了这个 - 除了它突出显示A-N中的每一行而不仅仅是正确的一行之外的所有内容。
Public Sub ValidateSKUs()
Dim sMfrPN As String
Dim tbl1 As Range
Dim myCell As Range
Set tbl1 = Sheets("Quote").Range("QuoteTable")
For Each myCell In tbl1.Columns(3).Cells
If myCell.Value = "" Then
Sheets("Quote").Range("A" & myCell & ":N" & myCell).Interior.Color = RGB(255, 248, 220)
Sheets("Quote").Range("A" & myCell & ":N" & myCell).Interior.Pattern = xlSolid
Else
sMfrPN = CleanUpPN(myCell)
myCell = sMfrPN
End If
Next
End Sub
Public Function CleanUpPN(ByVal sMfrPN As String) As String
Dim sPN As String
'Trim trailing spaces
sPN = Trim(sMfrPN)
'Replace space with #
sPN = Replace(sPN, " ", "#")
'remove multiple # (e.g. ##)
Do Until InStr(1, sPN, "##") = 0
sPN = Replace(sPN, "##", "#")
Loop
CleanUpPN = sPN
End Function
答案 0 :(得分:2)
结构化表的VBA编码可能很痛苦。您可以将表格作为ListObject object或$c = count($request->name[]);
for($i=0;$i<$c;$i++){
$item = new item();
$item->name = $request->name[$i];
$item->description = $request->description[$i];
$item->rating = $request->rating[$i];
$item->save();
}
Range object变量处理到.DataBodyRange property,并像处理任何其他工作表参考一样处理单元格地址。< / p>
Set
Sub fix_model_no()
Dim mn As Range
With Worksheets("Sheet1") '<~~ set this properly!
With .ListObjects("QuoteTable")
For Each mn In Range("QuoteTable[Model '#]")
If Len(Trim(mn.Value2)) Then
Intersect(.DataBodyRange, Rows(mn.Row)).Interior.ColorIndex = xlColorIndexNone
mn = Replace(Application.Trim(mn.Value2), Chr(32), Chr(35))
Else
mn.ClearContents
Intersect(.DataBodyRange, Rows(mn.Row)).Interior.ColorIndex = 3 'red
End If
Next mn
End With
End With
End Sub
中的单个勾号是引用QuoteTable[Model '#]
列所必需的。对ListObject表的任何引用都喜欢知道表所在的工作表。
您可能希望根据C列中的空白单元格考虑行突出显示的条件格式。
答案 1 :(得分:-1)
将“Z”更改为您需要的任何列
Model #