Excel数组排序+图片统一大小
Sub 图片调整合适大小()
' Debug.Print ActiveWorkbook.Name
图片显示比例 = 0.9 '1为顶满单元格
Dim wb As Workbook, sh As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object, shel As Object, WS As Object, FSO As Object
Dim arr(), brr() 'Redim preserve arr(i)
Set dic = CreateObject("scripting.dictionary")
Set wb = ActiveWorkbook
Set sh = wb.Sheets()
For Each shp In sh.Shapes
'思路判断:有时图片会跨越两个单元格,这时就需要比较图片的高度和单元格的高度,更好的思路是先将图片尺寸缩小一半,如,然后再进行调整
With shp
shp.Name = shp.Name & Round(Rnd() * , )
shp.Top = shp.Top + shp.Height /
shp.Left = shp.Left + shp.Width /
shp.Height = shp.Height / '先缩小图片,以防出现占据多个单元格的问题
shp.Width = shp.Width / '.Name = .Name & Rnd(1000)
'--------------------------------------------------------------
wt = shp.TopLeftCell.MergeArea.Width '单元格区域宽度;
ht = shp.TopLeftCell.MergeArea.Height '单元格区域高度 bl = .Width / .Height
If wt / ht < bl Then
.Width = wt * 图片显示比例 ' sh0.Cells(st_mid2, 1).Width
.Height = .Width / bl
.Left = shp.TopLeftCell.MergeArea.Left + (wt - .Width) / ' + 2
.Top = shp.TopLeftCell.MergeArea.Top + (ht - .Height) /
Else
.Height = ht * 图片显示比例
.Width = .Height * bl
.Top = shp.TopLeftCell.MergeArea.Top + (ht - .Height) /
.Left = shp.TopLeftCell.MergeArea.Left + (wt - .Width) /
End If
End With
Next
End Sub Sub 图片统一()
Dim wb As Workbook, sh As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object, shel As Object, WS As Object, FSO As Object
Dim arr(), brr() 'Redim preserve arr(i)
Set dic = CreateObject("scripting.dictionary")
Set wb = ActiveWorkbook
Set sh = wb.Sheets()
For Each shp In sh.Shapes
dic.Add shp.TopLeftCell.Row, shp.Name
Next
b = dic.keys
C = 数组升序(b)
For i = To UBound(b)
Debug.Print b(i), C(i)
Next
End Sub
Function 数组升序(arr)
Set js = CreateObject("msscriptcontrol.scriptcontrol")
js.Language = "javascript"
'arr = Application.Transpose(Range("A1:A10"))
TEMP = Join(arr, ",")
js.addcode "function aa(bb){js=bb.split(',');js.sort(function(a,b){return a-b;});return js;}"
sortarr = js.eval("aa('" & TEMP & "')")
数组升序 = Split(sortarr, ",")
End Function
Sub 图片统一大小()
Dim wb As Workbook, sh As Worksheet, ce As Range, shp As Shape
Dim wb As Workbook, sh As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object, shel As Object, WS As Object, FSO As Object
Dim arr(), brr() 'Redim preserve arr(i)
Set dic = CreateObject("scripting.dictionary")
Set wb = ActiveWorkbook
Set sh = wb.Sheets()
Set shp = Selection
End Sub Sub 重复标红()
Dim wb As Workbook, sh As Worksheet, ce As Range, shp As Shape
Dim dic As Object, re As Object, shel As Object, WS As Object, FSO As Object
Dim arr(), brr() 'Redim preserve arr(i)
Set dic = CreateObject("scripting.dictionary")
Set wb = ActiveWorkbook
Set sh = wb.Sheets()
Aend = sh.Range("a65536").End().Row
For Each ce In sh.Range("a1:a" & Aend)
If dic.exists(ce.Value) Then
ce.Interior.Color = vbRed
Else
dic.Add ce.Value,
End If
Next
End Sub Sub test()
Dim arr()
For i = To
t = Int(Rnd() * )
arr(t) = t & ";"
Next
Debug.Print Replace(Join(arr), " ", "")
End Sub Sub 文本升序()
Set js = CreateObject("msscriptcontrol.scriptcontrol")
js.Language = "javascript"
arr = Application.Transpose(Range("A1:A10"))
TEMP = Join(arr, ",")
js.addcode "function aa(bb){js=bb.split(',');js.sort();return js;}"
sortarr = js.eval("aa('" & TEMP & "')")
Debug.Print sortarr
End Sub
Sub 文本降序()
Set js = CreateObject("msscriptcontrol.scriptcontrol")
js.Language = "javascript"
arr = Application.Transpose(Range("A1:A10"))
TEMP = Join(arr, ",")
js.addcode "function aa(bb){js=bb.split(',');js.sort();js.reverse();return js;}"
sortarr = js.eval("aa('" & TEMP & "')")
Debug.Print sortarr
End Sub
Sub 数值升序()
Set js = CreateObject("msscriptcontrol.scriptcontrol")
js.Language = "javascript"
arr = Application.Transpose(Range("A1:A10"))
TEMP = Join(arr, ",")
js.addcode "function aa(bb){js=bb.split(',');js.sort(function(a,b){return a-b;});return js;}"
sortarr = js.eval("aa('" & TEMP & "')")
Debug.Print sortarr
End Sub
Sub 数值降序()
Set js = CreateObject("msscriptcontrol.scriptcontrol")
js.Language = "javascript"
arr = Application.Transpose(Range("A1:A10"))
TEMP = Join(arr, ",")
js.addcode "function aa(bb){js=bb.split(',');js.sort(function(a,b){return a-b;});js.reverse();return js;}"
sortarr = js.eval("aa('" & TEMP & "')")
Debug.Print sortarr
End Sub
Sub Sortlist() '但需要系统支持Framework
Set objSortedlist = CreateObject("System.Collections.Sortedlist")
For i = To
objSortedlist.Add Range("A" & i).Value, Range("A" & i).Value
Next i
For i = To objSortedlist.Count -
Debug.Print objSortedlist.GetKey(i)
Next
End Sub
Sub Arraylist()
Set objArrayList = CreateObject("System.Collections.ArrayList")
For i = To
objArrayList.Add Range("A" & i).Value
Next i
objArrayList.Sort
For i = To objArrayList.Count -
Debug.Print objArrayList(i)
Next
End Sub Sub test2()
brr = WorksheetFunction.Transpose([a1:a100&"-"])
For i = To
t = Int(Rnd() * + )
brr(t) = t
Next
Debug.Print Join(Filter(brr, "-", False), ";")
End Sub Sub test3()
Dim arr(- To )
For i = To
t = Int(Rnd() * - )
arr(t) = t & ";"
Next
Debug.Print Replace(Join(arr), " ", "")
End Sub '在介绍具体方法之前,先给个数组生成过程。(将数组a(1 to 50)定义成公用数组)
Sub MakeArr()
For i = To
a(i) = Int(Rnd() * + )
Next i
End Sub '1 ?快速排序法
Sub FastSort()
M =
For i = To
If a(i) <= a(i + ) Then
If i > M Then
M = i
Else
i = M
End If
GoTo kk:
Else
x = a(i)
a(i) = a(i + )
a(i + ) = x
If i <> Then i = i -
End If
kk:
Next i
End Sub '2 ?冒泡排序法
Sub BubbleSort()
For i = To
For j = i + To
If a(i) > a(j) Then
TEMP = a(j)
a(j) = a(i)
a(i) = TEMP
End If
Next j
Next i
End Sub '3 ?桶排序法
Sub Bucket()
Dim Index
Dim tempnum
For i = To
tempnum = a(i)
Index = i
Do
If Index > Then
If tempnum < a(Index - ) Then
a(Index) = a(Index - )
Index = Index -
Else
Exit Do
End If
Else
Exit Do
End If
Loop
a(Index) = tempnum
Next
End Sub '4 ?希尔排序法
Sub ShellSort()
Dim skipnum
Dim Index
Dim i
Dim tempnum
Size =
skipnum = Int((Size / )) -
Do While skipnum >
i = + skipnum
For j = i To
Index = j
Do
If Index >= ( + skipnum) Then
If a(Index) < a(Index - skipnum) Then
tempnum = a(Index)
a(Index) = a(Index - skipnum)
a(Index - skipnum) = tempnum
Index = Index - skipnum
Else
Exit Do
End If
Else
Exit Do
End If
Loop
Next
skipnum = (skipnum - ) /
Loop
End Sub '5 ?选择排序法
Sub SelectionSort()
Dim Index
Dim Min
Dim i
Dim tempnum
BzArr
i =
While (i < )
Min =
Index = Min -
While (Index >= i)
If a(Index) < a(Min) Then
Min = Index
End If
Index = Index -
Wend
tempnum = a(Min)
a(Min) = a(i)
a(i) = tempnum
i = i +
Wend
End Sub '以上五种排序方法均是数组排序的常用方法,优点是不需借助辅助单元格。执行效率视数组成员的相对有序性的不同而不同。以附件中的50位一维数组为例,快速排序法的循环次数是745次、冒泡法的循环次数是1225次、桶排序法的循环次数是704次、希尔排序法的循环次数是347次、选择排序法的循环次数为1225次。 '下面再介绍两种用EXCEL函数的排序方法,一般来说使用EXCEL自带函数或方法的执行效率会高一些,但限于函数参数的限制有的不得不借助于辅助单元格。 '6 ?SMALL函数法
Sub SmallSort()
Dim b( To )
For i = To
b(i) = Application.WorksheetFunction.Small(a, i)
Next
End Sub
'原数组不变,生成一个新的按升序排列的数组。同理也可以用LARGE函数?我个人觉得用这种方法较快? '7 ?RANK函数法
Sub RankSort()
BzArr
Dim b( To )
For i = To
Sheet2.Cells(i, ) = a(i)
Next
Set rankrange = Sheet2.Range("a1:a50")
For i = To
For k = To Application.WorksheetFunction.CountIf(rankrange, Sheet2.Cells(i, )) -
j = Application.WorksheetFunction.Rank(Sheet2.Cells(i, ), rankrange, )
a(j + k) = Sheet2.Cells(i, )
Next
Next
For i = To
Sheet1.Cells(i + , ) = a(i)
Next
End Sub
'此方法的缺点是需要借助辅助单元格?
Excel数组排序+图片统一大小的更多相关文章
- 一行css解决图片统一大小后的拉伸问题(被冷漠的object-fit)
一.先来个实战 1. 测试案例 需求: 要求表情库里所有表情包大小都固定 实际效果: 由于图片原始大小都不一样,强行设定大小值会导致拉伸,如果不设定大小则参差不齐.例如: //html <bod ...
- NPOI 导出excel带图片,可控大小
using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.DDF;using NPOI.SS.UserModel;using System.I ...
- Excel催化剂开源第40波-Excel插入图片做到极致的效果
不知道是开发人员的自我要求不高还是用户的使用宽容度足够大,在众多Excel插入图片的版本中,都没有考虑到许多的可大幅度提升用户体验的细节处理. Excel催化剂虽然开发水平有限,但也在有限的能力下,尽 ...
- atitit.自适应设计悬浮图片的大小and 位置
atitit.自适应设计悬浮图片的大小and 位置 #--------最好使用relate定位.. 中间,图片的大小和位置走能相对table, 没有遮罩左的或者哈面儿文本的问题,要悬浮,使用top:- ...
- 限制Xamarin获取图片的大小
限制Xamarin获取图片的大小在App开发中,经常会使用网络图片.因为这样不仅可以减少App的大小,还可以动态更新图片.但是手机使用网络环境千差万别.当网络环境不是理想的情况下,加载网络图片就是一个 ...
- IOS中修改图片的大小:修改分辨率和裁剪
在IOS开发中,经常有限制图片文件大小的,有的用户图片很大,导致上传时间慢,造成问题. 如:微信分享中,如果图片的大小好像大于50kbytes,就分享失败,而且没有任何提示. 所以,我添加了两个函数: ...
- c# 改变图片的大小(w,h)
本文介绍获取网络上的图片将其大小尺寸改成自己想要的 /// <summary> /// 图片大小裁剪 /// </summary> /// <param name=&qu ...
- css控制图片自适应大小
相信大家做网页时经常会碰到大分辨率的图片会把表格涨破以致漂亮的网页面目全非,但只要使用以下的CSS语句即可解决. 该CSS的功能是:大于600的图片自动调整为600显示. <style ...
- background-size 设置背景图片的大小
background-size 设置背景图片的大小,以长度值或百分比显示,还可以通过cover和contain来对图片进行伸缩. 语法: background-size: auto | <长度值 ...
随机推荐
- C#中使用Spire.docx操作Word文档
使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法. 之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄-4WD智能小车
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 前面已介绍X-CTR100控制器解码PS2无线手 ...
- DevExpress使用教程:XtraGridControl动态添加右键菜单
在使用 GridControl 的时候经常需要添加右键菜单.一般的做法是自己创建菜单项,然后注册GridView的Mouse-Click事件,然后Show出定义好的菜单.但是涉及到一些单击事件会收到编 ...
- Windows XP系统服役13年今正式退休
清明已过,服役13年的微软Windows XP系统也于今日正式“退休”.尽管这之后XP系统仍可以继续使用,但微软不再提供官方服务支持.对于中国数以亿计的XP用户来说,一方面是对已经使用了13年的操作系 ...
- python struct模块的使用
struct模块中的函数 函数 return explain pack(fmt,v1,v2…) string 按照给定的格式(fmt),把数据转换成字符串(字节流),并将该字符串返回. pack_in ...
- L238
Betty was offended because she felt that her friends had ignored her purposefully(deliberately) at t ...
- react-> webstrom 配置
React Library支持
- 务实java基础之集合总结
Java 提供了容纳对象(或者对象的句柄)的多种方式.其中内建的类型是数组,此外, Java 的工具库提供了一些 "集合类",利用这些集合类,我们可以容纳乃至操纵自己的对象. 声明 ...
- 【c++基础】int转string自动补零
前言 使用to_string函数可以将不同类型的数据转换为string类,请参考here和here.如果string的位数固定,如何进行自动补零呢?请看本文实例! 代码 确定位数,to_string ...
- 初次实践数据库--SQL Server2016
初学数据库使用 安装了SQL Server2016的开发者版本,本来以为就可以愉快地开始数据库的挖坑了,发现开出来之后除了创建数据库.选择数据库以外,并没有什么操作. 后来才发现还需要再安装SSMS( ...