我对VBA有点陌生
当有人输入错误child_variations.color时,宏的工作方式是:更新属性以将正确的数据或其中1个以上的错误反映到单元格中。宏将在冒号处的字符串中拆分为单独的单元(宏的该部分正常工作)。然后,宏需要遍历每个单元格,如果该单元格中的字符串包含下划线(),则该字符串将保存在变量中并放入单元格中。如果字符串不包含下划线(),则将其保存到其他变量中。
我遇到的问题是将字符串放到单独的单元格中。我想将冒号左侧的所有文本放入一个字符串和一个单元格中。我还想将冒号右边的文本放在另一个字符串和单元格中。我尝试使用下面的循环和if语句,但是冒号左右两边的所有文本都放在同一个单元格中。
下面我将介绍单元格在电子表格中的外观。
之前 child_variations.color:更新归因以反映正确的数据。 digital_assets.images.primary_image_url:主图像与备用图像不对齐。
外观如何 child_variations.color更新属性以反映正确的数据。
您能给我的任何帮助都会大有帮助!
Sub delimted()
Dim ws As Worksheet
Dim cel As range
Dim str As String
Dim str_is_blank As String
Dim my_range As range
Dim no_of_rows As Long
Dim i As Long
Dim str_with_special_char As String
Set my_range = Sheets("Setup").range("L7:Z500")
no_of_rows = my_range.Rows.Count
Set ws = ThisWorkbook.Sheets("Setup")
ws.range("I7:I500").Select
Selection.TextToColumns _
Destination:=range("L7:L500"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
comma:=False, _
Space:=True, _
Other:=True, _
OtherChar:=":"
For Each cel In my_range.Cells
If InStr(cel.Value, "_") > 0 Then
str_with_special_char = str_with_special_char & " " & cel.Value
range("I7").Value = str_with_special_char
ElseIf Not InStr(cel.Value, "_") Then
str = str & " " & cel.Value
range("J7").Value = str
ElseIf IsEmpty(cel.Value) Then
str_is_blank = str_is_blank & cel.Value
End If
Next cel
End Sub
答案 0 :(得分:0)
首先您可以显示一列包含您的数据和一列具有所需结果的列,以便我尝试一下吗?
第二:
ws.range("I7:I500").Select
会减慢宏的速度,相反,您可以使用:
ws.range("I7:I500").TextToColumns _
Destination:=range("L7:L500"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
comma:=False, _
Space:=True, _
Other:=True, _
OtherChar:=":"
但是无论如何,如果您想在一个范围内放置一些带有“ _”的单词,而在另一个范围内放置其他单词,则可以使用循环,这更容易实现和理解。
例如,如果您想用“ _”分隔单词,则可以使用类似的内容
Dim cell As Range
For Each cell In Range("L7:L500").Cells
If InStr(cell, "_") > 0 Then
cell.Offset(0, 1) = Left(cell, WorksheetFunction.Find("_", cell))
cell.Offset(0, 2) = Right(cell, Len(cell) -WorksheetFunction.Find("_",cell))
Else
cell.Offset(0, 3) = cell
End If
Next cell
,如果我们假设L列的单词是“ Hello_World”,那么在M列中您将拥有“ Hello_”,在N列中您将拥有“ World”,下一列将包含所有这些单词没有任何“ _”