当前位置: 首页 > wzjs >正文

网站建设技术交流景宁建设局网站

网站建设技术交流,景宁建设局网站,免费短视频制作,北邻京网站茵建设前面编写了一个:一个可以自动生成随机区组试验的excel VBA小程序2_excel进行区组试验设计-CSDN博客 根据同行的最新要求,调整有以下功能: 1、对照品种不能位于边行 2、同一品种不能出现在同一行(小区) 3、按试点生…

前面编写了一个:一个可以自动生成随机区组试验的excel VBA小程序2_excel进行区组试验设计-CSDN博客

根据同行的最新要求,调整有以下功能:

1、对照品种不能位于边行

2、同一品种不能出现在同一行(小区)

3、按试点生成随机区组设计,且决定是否汇总到一个表里

        具体说明如下:

1、当A2单元格选择为是,则按试点自动生成一个汇总表

实现内容如下:

2、当A14单元格设置为“品种1”时即对照为品种1,则在边行不出现品种1。

实现内容如下:

实现VBA代码如下:

Sub 生成试验设计()Dim ws As Worksheet, tg_ws As Worksheet
Dim rng As Range, rng2 As Range, loc_rng As Range
Dim cell As Range, lastcell As Range
Dim pq As String, sn As String, pl As String   'pq即排区号的简称,sn即sheetname的简称,pl即排列的简称
Dim qz_num As Integer
Dim i As Integer, j As Integer, lastRow As Integer, lastRow_2 As Integer, loc_i As Integer
Dim m As Integer, n As Integer, k As Integer, qz_i As Integer
Dim multi_tab As String
Dim arr As Variant, rngValues As Variant, tmp As Variant
Dim ck_name As StringDim ws_i As Worksheet   '工作表合并用
Dim targetSheet As Worksheet    '工作表合并用
Dim lastRow_A As Long   '工作表合并用
Dim wsi As Integer  '工作表合并用Application.ScreenUpdating = False       '刷新屏幕关闭
Application.DisplayAlerts = False        '警告提示框关闭'获取初始设置
pq = Range("A5").Value   '是否包含排区号
pl = Range("A8").Value    '试验设计是横向排列还是纵向排列
qz_num = Range("A11").Value    '区组的数量
multi_tab = Range("A2").Value    '试验点数量
ck_name = Range("A14").Value  '对照品种名称'获取品种名称
lastRow = Range("C10000").End(xlUp).Row    '获取品种名称列的最后一行的行号
Set rng = Range("C2:C" & lastRow)'获取试点名称
lastRow_2 = Range("E10000").End(xlUp).Row    '获取品种名称列的最后一行的行号
Set loc_rng = Range("E2:E" & lastRow_2)'按试验点数量进行循环
For loc_i = 1 To (lastRow_2 - 1)' 新建一个工作表,用于生成随机区组试验设计Set ws = ThisWorkbook.Sheets.Addws.Name = loc_rng(loc_i).Value     ' 将新工作表的名称设置为试点名称' 将范围内的值存储在数组中rngValues = rng.ValueReDim arr(1 To UBound(rngValues), 1 To qz_num) As VariantFor i = 1 To qz_numFor j = 1 To (lastRow - 1)  '对数组进行赋值arr(j, i) = rngValues(j, 1)NextNextFor i = 1 To qz_num    ' 随机排列数组中的元素
rnd:Randomize ' 初始化随机数生成器For m = LBound(arr) To UBound(arr) - 1n = Int((UBound(arr) - m + 1) * rnd + m)' 交换元素tmp = arr(m, i)arr(m, i) = arr(n, i)arr(n, i) = tmpNext m' 要求对照品种不出现在边行If arr(1, i) = ck_name Then GoTo rndIf arr(lastRow - 1, i) = ck_name Then GoTo rnd' 要求同一个品种不出现在同一行(小区)If i <> 1 ThenFor k = 1 To (i - 1)For j = 1 To (lastRow - 1)If arr(j, k) = arr(j, i) ThenGoTo rndEnd IfNextNextEnd IfNextIf pq = "否" Then    '没有排区号的情况Select Case plCase "横向"'输入行标题For i = 1 To qz_numws.Cells(i, 1).Value = "区组" & iNext'将品种名称放入对应行排号的单元格中For j = 1 To qz_num    '对行号循环For i = 2 To lastRow    '对列号循环ws.Cells(j, i).Value = arr(i - 1, j)NextNextSet rng2 = Range(ws.Cells(1, 1), ws.Cells(j - 1, i - 1))'对单元格进行居中设置ws.Cells(1, 1).CurrentRegion().HorizontalAlignment = xlCenterws.Cells(1, 1).VerticalAlignment = xlCenter'对田间种植区域添加边框With rng2.Borders.LineStyle = xlContinuous.Weight = xlThin.Color = RGB(0, 0, 0) ' 黑色End WithCase "纵向"'输入列标题For i = 1 To qz_numws.Cells(1, i).Value = "区组" & iNext'将品种名称放入对应行排号的单元格中For j = 1 To qz_num    '对列号循环For i = 2 To lastRow    '对行号循环ws.Cells(i, j).Value = arr(i - 1, j)NextNextSet rng2 = Range(ws.Cells(1, 1), ws.Cells(i - 1, j - 1))'对单元格进行居中设置ws.Cells(1, 1).CurrentRegion().HorizontalAlignment = xlCenterws.Cells(1, 1).VerticalAlignment = xlCenter'对田间种植区域添加边框With rng2.Borders.LineStyle = xlContinuous.Weight = xlThin.Color = RGB(0, 0, 0) ' 黑色End WithCase ElseMsgBox "无此排列类型,请重新选择"End SelectElse    '有排区号的情况Select Case plCase "横向"'输入行标题For i = 1 To qz_num * 2 Step 2ws.Cells(i, 1).Value = "排区号"NextFor i = 2 To qz_num * 2 Step 2ws.Cells(i, 1).Value = "品种名称"Next'将品种名称放入对应行排号的单元格中For j = 1 To qz_num * 2  '对行号循环If j Mod 2 = 1 Then    '对行号进行判断,若为奇数则输入排区号For i = 2 To lastRow    '对列号循环ws.Cells(j, i).Value = "'" & (Int(j / 2) + 1) & "-" & (i - 1)NextElse    '对行号进行判断,若为偶数则输入品种名称For i = 2 To lastRow    '对列号循环ws.Cells(j, i).Value = arr(i - 1, (Int(j / 2)))NextEnd IfNextSet rng2 = Range(ws.Cells(1, 1), ws.Cells(j - 1, i - 1))'对单元格进行居中设置ws.Cells(1, 1).CurrentRegion().HorizontalAlignment = xlCenterws.Cells(1, 1).VerticalAlignment = xlCenter'对田间种植区域添加边框With rng2.Borders.LineStyle = xlContinuous.Weight = xlThin.Color = RGB(0, 0, 0) ' 黑色End WithCase "纵向"'输入列标题For i = 1 To qz_num * 2 Step 2ws.Cells(1, i).Value = "排区号"NextFor i = 2 To qz_num * 2 Step 2ws.Cells(1, i).Value = "品种名称"Next'将品种名称放入对应行排号的单元格中For j = 1 To qz_num * 2  '对列号循环If j Mod 2 = 1 Then    '对列号进行判断,若为奇数则输入排区号For i = 2 To lastRow    '对列号循环ws.Cells(i, j).Value = "'" & (Int(j / 2) + 1) & "-" & (i - 1)NextElse    '对列号进行判断,若为偶数则输入品种名称For i = 2 To lastRow    '对列号循环ws.Cells(i, j).Value = arr(i - 1, (Int(j / 2)))NextEnd IfNextSet rng2 = Range(ws.Cells(1, 1), ws.Cells(i - 1, j - 1))'对单元格进行居中设置ws.Cells(1, 1).CurrentRegion().HorizontalAlignment = xlCenterws.Cells(1, 1).VerticalAlignment = xlCenter'对田间种植区域添加边框With rng2.Borders.LineStyle = xlContinuous.Weight = xlThin.Color = RGB(0, 0, 0) ' 黑色End WithCase ElseMsgBox "无此排列类型,请重新选择"End SelectEnd If
NextIf multi_tab = "是" ThenSet targetSheet = ThisWorkbook.Sheets.AddtargetSheet.Name = "汇总"' 初始化行号lastRow_A = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row + 1' 遍历所有工作表For wsi = 1 To ThisWorkbook.Sheets.CountSet ws_i = ThisWorkbook.Sheets(wsi)' 跳过目标工作表本身和汇总工作表本身(如果它们是单独的工作表)If ws_i.Name <> targetSheet.Name And ws_i.Name <> "随机区组设计" Then' 复制数据到目标工作表的指定位置,并调整位置targetSheet.Cells(lastRow_A, 1).Value = ws_i.Namews_i.UsedRange.Copy Destination:=targetSheet.Cells(lastRow_A + 1, 1)lastRow_A = targetSheet.Cells(targetSheet.Rows.Count, 1).End(xlUp).Row + ws_i.UsedRange.Rows.CountEnd IfNext' 可选:调整列宽以适应内容targetSheet.Columns.AutoFit
End IfApplication.ScreenUpdating = True       '刷新屏幕开启
Application.DisplayAlerts = True        '警告提示框开启End Sub


文章转载自:

http://NjsEWIp1.gfdpk.cn
http://lCks1Z4k.gfdpk.cn
http://4DU7NlTn.gfdpk.cn
http://WTfLBWny.gfdpk.cn
http://rCVx2jr9.gfdpk.cn
http://om90ugGi.gfdpk.cn
http://wnSbTTVx.gfdpk.cn
http://Bt6qU1fK.gfdpk.cn
http://l5k1logU.gfdpk.cn
http://NiDSwpZ5.gfdpk.cn
http://iccwpaIX.gfdpk.cn
http://6NJtioN6.gfdpk.cn
http://qNpljEew.gfdpk.cn
http://Cjjrzwb4.gfdpk.cn
http://LGcZkeV1.gfdpk.cn
http://W2ajasc3.gfdpk.cn
http://c29Kz2Qh.gfdpk.cn
http://zCnzPnwd.gfdpk.cn
http://RkZpCfYe.gfdpk.cn
http://YJNv0Pdz.gfdpk.cn
http://osL2JqKT.gfdpk.cn
http://Ibb9FSYB.gfdpk.cn
http://dbDByiDs.gfdpk.cn
http://v3Ix9azW.gfdpk.cn
http://2C20Bszk.gfdpk.cn
http://BivG9cLD.gfdpk.cn
http://ilzAOs9D.gfdpk.cn
http://Kvii2Oga.gfdpk.cn
http://Honj18vT.gfdpk.cn
http://fBdA5CdU.gfdpk.cn
http://www.dtcms.com/wzjs/629467.html

相关文章:

  • 重庆市网站推广如何把字体安装在wordpress
  • 用前端做的比较酷的网站福建住房与城乡建设部网站
  • 大学新校区建设网站精品课程网站建设设计方案
  • 网站咋建立东莞seo建站排名
  • 网站包装推广案例文章类型的网站模版
  • 网站后台维护技能百度搜索关键词排名优化推广
  • wordpress的网站怎么让他上线通信管理局网站 备案
  • 优秀网站设计案例中国网上推广营销
  • 网站建设与维护中职台州大型网站建设
  • 大作业做网站视频网站怎么做防盗链
  • 做面料哪个网站好游戏设计
  • 王建设医生网站免费建站免费推广的网站
  • 网站服务器维护 价目表郑州前端培训机构排名
  • 织梦首饰网站模板最近的国际新闻大事件
  • 广州网站定做WordPress图片投稿插件
  • 国内最好的网站建设青岛 网站备案
  • 网站建设信息公开和解读回应西安黑马程序员培训机构
  • 建站如何注重内容建设广州建设公司
  • 湖南新备案的网站建设银行网站怎么下
  • 网站适配手机屏幕网站一般用什么服务器
  • 肇庆有哪家做企业网站的泰安网站建设哪家快
  • 天津做公司网站成功的网络营销案例及分析
  • 签订网站建设合同需要注意什么网站推广的技巧
  • 西安市专业网站建设wordpress写博客
  • 榆林做网站的公司永久免费改ip地址软件
  • 做ppt的网站兼职国内精美网站欣赏
  • 清远市建设局官方网站表情包制作赚钱软件app哪个好用
  • 集团网站建设招标郑州公司网站建设服务
  • 网站推广服务网站连锁wordpress数据库的名称
  • 大连市公众平台网站wordpress有点