我正在建立一个CSV文件的产品进口到一个网络商店。由于产品有不同的属性(大小和/或颜色),我需要在文件中添加这些变量。总之,我有大约800行,需要填补空白,如下图所示。变化的范围在3到5之间。

我一直在努力让一些VBA代码起作用。
Sub FillVariations()
'
' Makro8 Makro
'
' Find row with content and copy
Selection.End(xlDown).Select
Selection.Copy
' Move one step down
ActiveCell.Offset(1, 0).Activate
' Add =" <ctrl-v> " & " - " & az<samerow>
ActiveCell.FormulaR1C1 = _
"=""Axelväska/handväska, Crazy Horse, RCH7"" & "" - "" & RC[47]"
' Move one step down
ActiveCell.Offset(1, 0).Activate
End SubCtrl是思想,但(显然)不起作用.
基本上:往下移动一排。如果单元格有内容-复制它。往下挪一排。粘贴内容,添加空格、连字符和另一个空格,然后粘贴同一行AZ列中的内容。往下挪一排。如果单元格为空,则粘贴先前复制的内容,添加空格、连字符和空格,并粘贴新行中的AZ内容.
我非常感谢你的帮助!
发布于 2017-09-27 22:48:25
宏中缺少的主要内容是数据的循环,空单元格的循环。
如果您计划不止一次地使用它,您也可能希望更仔细地选择正确的列,因为它目前是从选定的任何单元格开始的。
也许是这样的:
Sub FillVariations()
'
' Makro8 Makro
'
'figure out how far down data goes
Range("AZ2").Select
Selection.End(xlDown).Select
Dim endrow
endrow = Selection.Row
'always start in the correct column
Range("E1").Select
Selection.End(xlDown).Select
Dim basename
'loop through all data
Do While ActiveCell.Row < endrow
'Store cell of current base name
basename = Selection.Address
'loop through empty cells and set formula if cell isn't empty
Do While True
ActiveCell.Offset(1, 0).Activate
'if next cell isn't empty, isn't past the end of the list, go to outer loop
If ActiveCell.Formula = "" And ActiveCell.Row <= endrow Then
ActiveCell.Formula = "=CONCATENATE(" & basename & ","" - ""," & "AZ" & Selection.Row & ")"
Else
Exit Do
End If
Loop
Loop
End Sub发布于 2017-09-28 04:01:17
您的方法的一个明显问题是,一个工作表单元格中可以存储多少个字符(32,767个最大?);当然,这对您来说已经足够了,但是如果不是.
另一个想法是,您正在尝试设置它,就像记录一个“手工”执行它的宏,而不是真正地自动化这个过程。
无论如何,这(与任何必要的修改)应该有效地做到这一点。可以将sCSV字符串保存为文本/csv文件。
Private Sub Build_String_CSV()
Dim iRowStart As Long
Dim iRowEnd As Long
Dim i As Long
Dim sCSV As String
iRowStart = 1 ' or whatever
iRowEnd = 800 ' or whatever
' Note that the values above can be found dynamically, of course
For i = iRowStart To iRowEnd
sCSV = sCSV & " - " & ActiveSheet.Range("AZ" & i)
Next
sCSV = sCSV = Mid(sC,SV, 4, 10000000) ' remove the very first 3 characters: space-dash-space
' Save the sCSV string as csv file
End Subhttps://stackoverflow.com/questions/46457934
复制相似问题