ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 620|回复: 11

[求助] 恳请大神帮忙看下转置的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-1-31 22:44 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
麻烦大佬看下可否能够通过VBA来实现,不胜感激!!
将表1(拆分)转置成表2(条码),如果在条件允许的话,表2(条码)能否转置成表1(拆分)呢?

拆分和条码.zip

25.99 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2024-2-1 08:22 | 显示全部楼层
代码如下,供参考。。。
  1. Sub ykcbf()  '//2024.2.1
  2.     Dim arr, brr
  3.     arr = Sheets("拆分").UsedRange
  4.     ReDim brr(1 To 10000, 1 To 3)
  5.     For i = 2 To UBound(arr)
  6.         st = arr(i, 1)
  7.         If st <> Empty Then
  8.             n = 0
  9.             For j = 2 To UBound(arr, 2) Step 3
  10.                 If arr(i, j) <> Empty Then
  11.                     n = n + 1
  12.                     If n = 1 Then
  13.                         m = m + 1
  14.                         brr(m, 1) = st
  15.                     End If
  16.                     m = m + 1
  17.                     brr(m, 1) = CStr(arr(i, j))
  18.                     brr(m, 2) = arr(i, j + 1)
  19.                     brr(m, 3) = arr(i, j + 2)
  20.                 End If
  21.             Next
  22.         End If
  23.     Next
  24.     With Sheets("条形码")
  25.         .UsedRange = ""
  26.         .Columns(1).NumberFormatLocal = "@"
  27.         .[a1].Resize(m, 3) = brr
  28.         .[a1].Resize(m, 3).Borders.LineStyle = 1
  29.     End With
  30. End Sub

复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-31 23:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2024-2-1 05:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub to_barcode()
  2.     Dim wb As Workbook
  3.     Dim ws_split, ws_barcode As Worksheet
  4.     Dim lastRow As Long, lastColumn, nonEmptyCount, numGroups As Long
  5.     Dim cell, rng As Range
  6.     Dim arr(), brr() As Variant
  7.    
  8.     Set wb = ThisWorkbook
  9.     Set ws_split = wb.Sheets("拆分")
  10.     Set ws_barcode = wb.Sheets("条形码")
  11.    
  12.     lastRow = ws_split.Cells(ws_split.Rows.Count, 1).End(xlUp).Row
  13.     lastColumn = ws_split.Cells(1, ws_split.Columns.Count).End(xlToLeft).Column
  14.    
  15.     Set rng = ws_split.Range(Cells(2, 1), Cells(lastRow, lastColumn))
  16.    
  17.     '计算使用区域内非空单元格数量
  18.     nonEmptyCount = 0
  19.     For Each cell In rng
  20.         If Not IsEmpty(cell) Then
  21.             nonEmptyCount = nonEmptyCount + 1
  22.         End If
  23.     Next cell
  24.     '用非空单元格数量减去外箱码数量,再除以3算出有多少个条码
  25.     numGroups = (nonEmptyCount - lastRow + 1) / 3
  26.     '条码数加上外箱码算出第2个表中数据的行数
  27.     rowBarcode = lastRow - 1 + numGroups
  28.     '重定义数组brr用于存放拆分表处理后的数据
  29.     ReDim brr(1 To rowBarcode, 1 To 3)
  30.    
  31.     '将拆分表中的数据部分赋值给数组arr
  32.     'arr = ws_split.Range(Cells(2, 1), Cells(lastRow, lastColumn)).Value
  33.     arr = rng.Value
  34.    
  35.     m = 0
  36.     For i = LBound(arr, 1) To UBound(arr, 1)
  37.         m = m + 1
  38.         brr(m, 1) = Replace(arr(i, 1), "-", "--")
  39.         For j = 2 To UBound(arr, 2) Step 3
  40.             If arr(i, j) <> "" Then
  41.                 m = m + 1
  42.                 brr(m, 1) = arr(i, j)
  43.                 brr(m, 2) = arr(i, j + 1)
  44.                 brr(m, 3) = arr(i, j + 2)
  45.             End If
  46.         Next j
  47.     Next i
  48.    
  49.     '将处理好的拆分表数据复制到条形码表
  50.     ws_barcode.Cells.Clear
  51.     ws_barcode.Range("A1").Resize(rowBarcode, 3) = brr
  52.    
  53.    
  54.     '调整格式
  55.     lastRow = ws_barcode.Cells(ws_barcode.Rows.Count, 1).End(xlUp).Row
  56.     ws_barcode.Range(Cells(1, 1), Cells(lastRow, 3)).Font.Name = "微软雅黑"
  57.     ws_barcode.Range(Cells(1, 1), Cells(lastRow, 3)).Font.Size = 12
  58.     For i = 1 To lastRow
  59.         If ws_barcode.Cells(i, 2).Value = "" Then
  60.             ws_barcode.Range("A" & i).Font.Bold = True
  61.         Else
  62.             ws_barcode.Range("A" & i & ":C" & i).Borders.LineStyle = 1
  63.             ws_barcode.Range("A" & i).NumberFormatLocal = "0_);[红色](0)"
  64.         End If
  65.         ws_barcode.Range("A" & i).HorizontalAlignment = xlHAlignLeft
  66.         ws_barcode.Range("B" & i).HorizontalAlignment = xlHAlignLeft
  67.         ws_barcode.Range("C" & i).HorizontalAlignment = xlHAlignCenter
  68.     Next i

  69. End Sub
复制代码


时间有限写了个从拆分表到条形码的

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-1 08:21 | 显示全部楼层
拆分,附件供参考

看不出还原有啥意义

拆分和条码.7z

36.64 KB, 下载次数: 14

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-1 09:14 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-1 09:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-1 09:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhanglcn 发表于 2024-2-1 05:03
时间有限写了个从拆分表到条形码的

谢谢大佬

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-1 10:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhanglcn 发表于 2024-2-1 05:03
时间有限写了个从拆分表到条形码的

老师,如果有空的话还帮忙看下呢,就是我点击运行就弹出了这个了,需要怎么弄呢?
1.png
2.jpg

TA的精华主题

TA的得分主题

发表于 2024-2-1 16:27 | 显示全部楼层
hongmeili 发表于 2024-2-1 10:08
老师,如果有空的话还帮忙看下呢,就是我点击运行就弹出了这个了,需要怎么弄呢?

你把文件发上来
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 23:48 , Processed in 0.041976 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表