开帖解答VBA的各类问题
vba吧
全部回复
仅看楼主
level 12
🌞Shawn 楼主
一起研究,共同进步
2018年12月28日 10点12分 1
level 1
你好!我想请教一下大佬!
就是我现在有个大批量的工作表(有14万行)
每一行要插入与前一行相同的行
请问这个宏怎么写?[惊哭]
2018年12月28日 10点12分 2
这个功能 手动可否? 把原始数据一模一样复制到一份到表尾,然后排序
2022年01月02日 11点01分
大概思路是将现有数据存入数组,然后数组循环的时候,每条写入2次即可。
2018年12月28日 14点12分
@🌞Shawn 已经写出来了谢谢
2018年12月29日 00点12分
@尘轻扬 如果对写入数据的顺序没有要求,这个思路很简便
2022年01月04日 03点01分
level 2
大佬,想帮忙改个word宏,可以帮忙吗?
2018年12月29日 01点12分 3
word排版相关的吗?可以发出来看看
2018年12月29日 02点12分
level 8
不知道楼主用vba对数组进行排序有深入研究不?我就对这个排序很头疼,找不到好方法。
我看到别人说先把结果输出工作表,然后利用工作表函数排序。我个人不太喜欢这种方法,我每次都是用两个相同的数组对倒一次,在对倒的过程中一边检索顺序一边倒数据,感觉还是很罗嗦,代码也不简洁。
2018年12月29日 03点12分 4
如果数组中是整型,可以调用javascript对象进行排序
2018年12月29日 03点12分
@zmj9151 完全不会javascript啊,通常数组是文本、双精度混合的,因为我主要做统计编程
2018年12月29日 03点12分
想要进行什么样的排序?A-Z升序,还是特定的规则排序?
2018年12月29日 03点12分
@🌞Shawn 就是最简单的按数字大小或者文本顺序,其中以按数字大小排序的更多些。我现在是用数据库来代替,先导入数据库排序完成再导出,我觉得比自己编程要简单很多,尤其通用性更好。自己做也只能做数字排序,文本还是搞不定
2018年12月29日 03点12分
level 12
🌞Shawn 楼主
数组排序的自定义函数
Function SortArrayAtoZ(myArray As Variant)
Dim i As Long
Dim j As Long
Dim Temp
'Sort the Array A-Z
For i = LBound(myArray) To UBound(myArray) - 1
For j = i + 1 To UBound(myArray)
If UCase(myArray(i)) > UCase(myArray(j)) Then
Temp = myArray(j)
myArray(j) = myArray(i)
myArray(i) = Temp
End If
Next j
Next i
SortArrayAtoZ = myArray
End Function
2018年12月29日 03点12分 5
level 12
🌞Shawn 楼主
调用数组排序函数
Sub RunTheSortMacro()
Dim i As Long
Dim myArray As Variant
'Set the array
myArray = Array("p", "A", "G", 3, "l", "6", 10, "K", 7)
'myArray variable set to the result of SortArrayAtoZ function
myArray = SortArrayAtoZ(myArray)
'Output the Array through a message box
For i = LBound(myArray) To UBound(myArray)
MsgBox myArray(i)
Next i
End Sub
2018年12月29日 03点12分 6
谢谢,我研究下
2018年12月29日 04点12分
level 1
请问这个要怎么操作?
2018年12月29日 09点12分 7
解决方法的图片和公式在下一楼,仅供参考
2018年12月29日 13点12分
level 12
🌞Shawn 楼主
如图,使用公式解决此问题。
=IF(AND(B3=MIN(B3,D3,F3,H3,J3),C3=MIN(C3,E3,G3,I3,K3)),"渠道A",
IF(AND(D3=MIN(B3,D3,F3,H3,J3),E3=MIN(C3,E3,G3,I3,K3)),"渠道B",
IF(AND(F3=MIN(B3,D3,F3,H3,J3),G3=MIN(C3,E3,G3,I3,K3)),"渠道C",
IF(AND(H3=MIN(B3,D3,F3,H3,J3),I3=MIN(C3,E3,G3,I3,K3)),"渠道D",
IF(AND(J3=MIN(B3,D3,F3,H3,J3),K3=MIN(C3,E3,G3,I3,K3)),"渠道E","待定")))))
使用VBA代码可以在数组中,判断该渠道的费用是否为最小值,二者同时为最小,返回对应渠道名称即可。
2018年12月29日 13点12分 8
level 2
请问withEvents这个关键词用来干嘛的,和用object关键词定义有什么区别呢
2018年12月29日 15点12分 9
withevents用于object对象的事件声明。 详细内容可以参考链接里面的说明 http://www.excelpx.com/thread-170919-1-1.html
2018年12月29日 16点12分
withevents简单来说就是把一些本来没事件的对象变成有事件触发,但不是所有对象都可以使用withevents的
2021年06月22日 06点06分
level 2
请问大家,有没有代码关于画出散点图然后再两两连接的代码,已知连接方案。
求帮忙
2018年12月29日 21点12分 10
连接的目的是为了方便显示2个系列或多个系列的相同项目吗?
2018年12月30日 00点12分
@🌞Shawn 是这样, 有25个城市,然后两两连接,目标是让总距离最短,(最小生成树问题),我最后想把解决方案用散点图表示出来,然后往里加入新数据的时候还可以画出图。
2018年12月30日 14点12分
@朱猪珠5 散点图连接的问题目前有待研究
2019年01月03日 01点01分
哈哈,这类问题,我以前最拿手了
2021年08月04日 16点08分
level 5
我想请教一个问题,excel中单元格变化自动执行宏,但是单元格如果是按照时间顺序,依次变化(类似于手动逐条输入,但是很快),那怎么实现所有单元格变化之后再执行宏
2018年12月30日 03点12分 11
大概思路是设置动态变量定义最大单元格行数,当最后一个单元格完成输入后触发事件
2018年12月30日 04点12分
解决方案在下一楼,手机写的代码,潦草勿怪
2018年12月30日 04点12分
level 12
🌞Shawn 楼主
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaxRow& '定义想要执行事件的行数
MaxRow=.... 'ubound(数组)或者其他
If Target.Row = MaxRow Then '指定行数为MaxRow时触发事件
自定义操作
End If
End Sub
2018年12月30日 04点12分 13
level 5
如果行数是变量怎么判定呢?
2018年12月30日 04点12分 14
事件之前的动作什么?
2018年12月30日 04点12分
没空值可是调用counta,或者range(a65536).end(xlup).row
2021年06月07日 04点06分
level 5
这一次是3行,下一次可能是4行!
2018年12月30日 04点12分 15
无法确定行数的话,可以使用按钮执行自动化操作。你能大概描述一下现有的自动化工具完成的是什么样的流程吗?
2018年12月30日 04点12分
现在已经实现了改变单元格自动执行程序,并输出结果,但是实际情况是用扫码枪扫的条码,条码会连续出现,但是由于条码原因,会在a1单元格输入80个字符,之后会跳到a3单元格在输入80个字符,接着会跳到a5单元格,直到条码里面的内容结束,现在是当a1单元格变化后就执行了宏语句,所以会出错
2018年12月30日 04点12分
这个能不能加入程序等待时间等命令来实现呢?
2018年12月30日 04点12分
@🌞Shawn 实现的流程就是根据所有变化的单元格里的内容,来跟基础数据比对,抓去相应内容,并把内容输出
2018年12月30日 04点12分
level 2
这个怎么写
2018年12月30日 06点12分 17
大概思路是使用select case的分支条件,结合instr判断c列中的内容,设置对应的单元格条件格式
2018年12月30日 06点12分
外层加上C列内容更新的事件 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then 设置E列单元格格式 End If End Sub
2018年12月30日 08点12分
有时间可以帮我做一条示范么
2018年12月30日 10点12分
@晓东553 假期没时间上电脑,过些日子吧😄
2018年12月30日 10点12分
1 2 3 4 5 6 尾页