根据记录文件的存在将数据列转换为以逗号分隔的数据单元

根据记录文件的存在将数据列转换为以逗号分隔的数据单元

我必须将数据库从一种格式迁移到另一种格式。服务器接受不同格式的数据。当前的问题是图像 URL 文件。

DATA BASE 1) = WHERE IMAGES WERE DOWNLOADED FROM
DATA BASE 2) = TARGET DATA BASE TO UPLOAD TO

数据库 1)

  • 生成一个下载 csv。电子表格文件,其中列标题 A1“sku”和列标题 B1“url”中标识了记录
  • 单元格 A2 中的“sku”值:“toy-blue-boat”可以有 0-100 个关联的图像 URL
  • 下载表会将所有单独的 URL 放在“url”列 B2-B101 中

在此示例中,第一个 SKU 有 100 个图像 URL;下一个 SKU 将出现在第 102 行 A 列 "sku": "toy-red-car",并且它也将有 100 个与其关联的图像 URL 填充列B102-B202

这会在其他几个 SKU 上重复,每个 SKU 在 B 列“url”中都有 100 个图像 URL

  • “黄色玩具长颈鹿”、“绿色尼加乌龟”、“橙色弹跳球”。
A1 sku
A2 "toy-blue-boat"
...
A201 "toy-red-car"
...
A301 "yellow-toy-giraffe"
...
A401 "green-nijia-turtle"
...
A501 "orange-bounce-ball"

每列之间相隔 100 个空格 A 列

B1 "url"
B2  www.//where-is-my-image-AWS3/toy-blue-boat-1.jpeg
B3  www.//where-is-my-image-AWS3/toy-blue-boat-2.jpeg
B4  www.//where-is-my-image-AWS3/toy-blue-boat-3.jpeg
B5  www.//where-is-my-image-AWS3/toy-blue-boat-4.jpeg
...
B101 www.//where-is-my-image-AWS3/toy-blue-boat-100.jpeg
B102  www.//where-is-my-image-AWS3/toy-red-car-1.jpeg
B103  www.//where-is-my-image-AWS3/toy-red-car-2.jpeg
B104  www.//where-is-my-image-AWS3/toy-red-car-3.jpeg
B105  www.//where-is-my-image-AWS3/toy-red-car-4.jpeg
...
B201 www.//where-is-my-image-AWS3/toy-red-car-100.jpeg
B202  www.//where-is-my-image-AWS3/yellow-toy-giraffe-1.jpeg
B203  www.//where-is-my-image-AWS3/yellow-toy-giraffe-2.jpeg
B204  www.//where-is-my-image-AWS3/yellow-toy-giraffe-3.jpeg
B205  www.//where-is-my-image-AWS3/yellow-toy-giraffe-4.jpeg
...
B301 www.//where-is-my-image-AWS3/yellow-toy-giraffe-100.jpeg
ETC.

问题是服务器二仅接受单行中的 URL 数据,并且数据位于单个“;”分号分隔的单元格中。

A1 sku                   
A2 "toy-blue-boat"       
A3 "toy-red-car"
A4 "yellow-toy-giraffe"
A5 "green-nijia-turtle"
A6 "orange-bounce-ball"

B1 url
B2 www.//where-is-my-image-AWS3/toy-blue-boat-1.jpeg;www.//where-is-my-image-AWS3/toy-...TO 100
B2 www.//where-is-my-image-AWS3/toy-red-car-1.jpeg;www.//where-is-my-image-AWS3/toy-...TO 100
B3 www.//where-is-my-image-AWS3/yellow-toy-giraffe-100.jpeg;B301 www.//where-is-my-TO 100
ETC.

问超级用户。在 EXCEL 公式中或使用 VBA 或其他程序中是否有一种方法可以应用于数据库 1) 的数据,以便在 C 列中创建;无论新 SKU 在哪里出现。在本例中为 C2 / C102 / C202 / C302 / C402 等。一个单元格,其中包含与 C 列该行中的 SKU 关联的 URL 的分号分隔数据?如果仅发生这种情况,我可以从那里开始。或者,如果更简单...只需处理数据以允许数据库 2) 格式接受它,它就会出现在同一个 Excel 工作簿或其他程序的单独工作表上。

(《碟中谍》音乐)

欢迎任何想法。

附言:我确实有 Excel 365 功能。

谢谢。

答案1

Private Sub urlSwitchaRoo()

Dim srcSheet As Worksheet
Dim dstSheet As Worksheet
Dim urlString As String
Dim rowCount As Long
Dim i As Long
Dim x As Long

x = 2

Set srcSheet = ActiveWorkbook.Sheets(1)
Set dstSheet = ActiveWorkbook.Sheets(2)
rowCount = srcSheet.UsedRange.Rows.Count


dstSheet.Cells(2, "A") = srcSheet.Cells(2, "A")
urlString = srcSheet.Cells(2, "B").Value

For i = 3 To rowCount

    If srcSheet.Cells(i, "A") <> "" Then
        dstSheet.Cells(x, "B").Value = urlString
        x = x + 1
        dstSheet.Cells(x, "A") = srcSheet.Cells(i, "A")
        urlString = srcSheet.Cells(i, "B")
    Else
        urlString = urlString & ";" & srcSheet.Cells(i, "B")
    End If

Next i

dstSheet.Cells(x, "B").Value = urlString

End Sub

我知道您暗示每个 SKU 都有 100 个 URL,我认为我不会对该规则进行硬编码,而是使用动态数量的 URL,并在 A 列中出现一个值来触发下一组新的 URL。

另外,我使用了一个工作簿,其中包含工作表,如果您需要它们在不同的工作簿中,则只需调整设置 srcSheet/dstSheet 为您想要的工作簿。或者保持原样,然后在生成工作表后将其移动到新工作簿。

我想那会让我变成汤姆克鲁斯,我可以变成邦德吗,这样我也能得到这个女孩:)

*****奖金信息

在测试期间,我创建了一个包含 78000 行的 Excel 表,以及一个每 23 行的新 SKU。我为该函数添加了一个计时器。

使用 & 连接 URL 时,平均时间约为 1.2 秒。
使用 + 连接 URL 时,平均时间约为 1.35 秒。

因此,对于在 VBA 中连接字符串的最佳方法是什么这个问题的答案是'一点点。

相关内容