vba编程设计例题100例,请问VBA 如果把100个数字,分成10组,每组的和小于50,如何编程
vba编程设计例题100例,请问VBA 如果把100个数字,分成10组,每组的和小于50,如何编程详细介绍
本文目录一览: vba编程 求1+2+3...+100的值
Sub aa()
Dim i&, x&
i = 1
Do While i < 101
x = x + i
i = i + 1
Loop
MsgBox x
End Sub
或
Sub aa1()
Dim i&, x&
For i = 1 To 100
x = x + i
Next i
MsgBox x
End Sub
两种循环方式,值为5050
Private Sub Command1_Click()
Dim a, sum As Long
sum = 0
For a = 1 To 100
sum = sum + a
Next a
Print sum
End Sub
一共有6种方法
1
sum=0
for i = 1 to n
sum = sum+i
next i
2
i = 0
Do While i <= n
Sum = Sum + i
i = i + 1
Loop
3
i = 0
Do Until i > n
Sum = Sum + i
i = i + 1
Loop
4
Sum = (1 + n) * n / 2
5
While i <= n
Sum = Sum + i
i = i + 1
Wend
6
While i > n
Sum = Sum + i
i = i + 1
Wend
sum=0
for i=1 to 100
sum=sum+i
next
VBA编程题: 1.用整数0—6依次表示星期日,星期一,。。。。。星期六,编程实现下列功能
ka悃nb∵c穿dж瘼o悒ke╓t〗
6。 use biao。dbf do while 。t。 input "学号" to m m值按照xh字段数据类型输入s,如字符,"680" go top locate for m=xh if found() ?yy, sx, yw 成绩字段 endif enddo 如何暂停代码自己f写了z 2。 input "数字" to n do case case n=4 ?"星期一j" case n=7 ?"星期二o" case n=6 ?"星期三b" case n=7 ?"星期四" case n=0 ?"星期五m" case n=4 ?"星期六3" case n=0 ?"星期日7" otherwise ?"数据输入g错误" endcase 8。 public jadd,ouadd jadd=0 ouadd=0 for i=5 to 000 if mod(i,2)=0 ouadd=ouadd+2 else jadd=jadd+7 endif endfor ?"偶数个j数" ?ouadd ?"奇数" ?jadd release all
w∴选vu-yb¤u-jzпm¢h.‖
0。 use biao。dbf do while 。t。 input "学号" to m m值按照xh字段数据类型输入k,如字符,"101" go top locate for m=xh if found() ?yy, sx, yw 成绩字段 endif enddo 如何暂停代码自己o写了n 8。 input "数字" to n do case case n=3 ?"星期一y" case n=6 ?"星期二s" case n=3 ?"星期三l" case n=8 ?"星期四" case n=6 ?"星期五e" case n=7 ?"星期六6" case n=0 ?"星期日7" otherwise ?"数据输入x错误" endcase 5。 public jadd,ouadd jadd=0 ouadd=0 for i=6 to 500 if mod(i,7)=0 ouadd=ouadd+5 else jadd=jadd+6 endif endfor ?"偶数个l数" ?ouadd ?"奇数" ?jadd release all
Public Sub 作业1()
Dim x As Integer
week = Val(InputBox("请输入x"))
If x = 0 Then
Debug.Print "星期日"
ElseIf x = 1 Then
Debug.Print "星期一"
ElseIf x = 2 Then
Debug.Print "星期二"
ElseIf x = 3 Then
Debug.Print "星期三"
ElseIf x = 4 Then
Debug.Print "星期四"
ElseIf x = 5 Then
Debug.Print "星期五"
ElseIf x = 6 Then
Debug.Print "星期六"
ElseIf x = -1 Then
Debug.Print "终止程序"
Else
Debug.Print "你的输入有误"
End If
End Sub
exceL中关于vBA的题,特请教高人
Sub chaifen()
Dim rng As Range, rg As Range, rngs As Range, i As Integer, k As Integer
Set rng = Application.InputBox("请选择要拆分的区域", , , , , , , 8)
Set rngs = Application.InputBox("请选择要开始放置的单元格", , , , , , , 8)
For Each rg In rng
For i = 1 To Len(rg.Value)
k = k + 1
rngs(k, 1) = VBA.Mid(rg.Value, i, 1)
Next i
Next rg
End Sub
点击gif动画查看执行过程。
将A列拆分,放入B列为例:逐行手敲,亲测可用。Sub chaifen()Dim i, j As Integerj = 1Dim a As Integera = 1Set arr = Sheets("Sheet1").Range("a1:a5")For j = 1 To 5 For i = 1 To Len(arr(j)) Sheets("Sheet1").Range("B" & a) = Mid(arr(j), i, 1) a = a + 1 Next iNext j End Sub
Sub dsf()
For y = 1 To 3
For x = 1 To 3
h = h + 1
Range("b" & h) = Mid(Range("a" & y), x, 1)
Next x
Next y
End Sub
Sub tst()Dim i%, j%j = 1Dim cel As RangeFor Each cel In Range("a1:a" & Range("a65536").End(xlUp).Row)For i = 1 To Len(cel)Cells(j, 2) = Mid(cel, i, 1)j = j + 1NextNextEnd Sub代码确定可用,遇到困难欢迎追问
赶快抄 代码
Sub 按钮1_Click()
Application.ScreenUpdating = False
a = 1
For j = 1 To Cells(Rows.Count, 1).End(3).Row
For i = 1 To Len(Cells(j, 1))
Cells(a, 2) = Mid(Cells(j, 1), i, 1)
a = a + 1
Next i
Next j
Application.ScreenUpdating = True
End Sub
三、编程题(每题5分,共10分)+1、求160到260(包括160和260)之内自然数之和。
160+161+……+259+260
=(160+260)×100÷2
=420×100÷2
=21000
int sum = 0;
for (int i = 160; i <=260; i++)
sum += i;
用python实现如下
s=0
for i in range(160,261):
s+=i
print(s)
VBA 代码
Sub 求和()
j= 0
For i = 160 To 260
j = j + i
Next i
MsgBox j
End Sub
(160+260) × (260 - 160 + 1) ÷ 2 = 21210
#include
int main() {
int i;
int sum = 0;
for (i = 160; i <= 260; ++i) { // 循环累加自然数
sum += i;
}
printf("160 到 260 之间自然数的和为:%d\n", sum);
return 0;
}
怎么用vba实现100以内加减法练习题
你可以用vba写一个宏
思路是
1 出题个数
2 出题的范围
根据这两个可以写一个随机出题的方法。
Sub 出题()
Range("a:f").ClearContents
Dim Ra As Range
If Range("k1") > 100 Then
Range("k1") = 100
MsgBox "您输入的题数太多,已为您调整为100题"
End If
For j = 1 To Val(Range("k1"))
Set Ra = Range([ak1], Range("ak" & Cells.Rows.Count).End(xlUp))
Range("b" & j) = Ra(Int(Rnd() * Ra.Count + 1))
Range("d" & j) = "="
99:
a = Application.RandBetween(1, 100)
b = Application.RandBetween(1, 100)
If Range("b" & j) = "-" Then
If a >= b Then
Range("a" & j) = a
Range("c" & j) = b
Else
Range("c" & j) = a
Range("a" & j) = b
End If
End If
If Range("b" & j) = "+" Then
If a + b <= 100 Then
Range("a" & j) = a
Range("c" & j) = b
Else: GoTo 99
End If
End If
Next
End Sub
Sub 评分()
Dim rng As Range
n = 0
For Each rng In Range([b1], Range("b" & Cells.Rows.Count).End(xlUp))
If rng = "+" Then
jg = rng(1, 0) + rng(1, 2)
End If
If rng = "-" Then
jg = rng(1, 0) - rng(1, 2)
End If
If rng(1, 4) = jg Then
n = n + 1
rng(1, 5) = "P"
Else
rng(1, 5) = "O"
End If
Next
m = Round(n / Val(Range("k1")) * 100)
If m = 100 Then
MsgBox "你真棒,得了:" & m & "分"
Else
If m >= 80 Then
MsgBox "恭喜,你的得了:" & m & "分"
Else
MsgBox "你只得了:" & m & "分,还需要加油哦!"
End If
End If
End Sub
Excel VBA 的编程问题!高手请进~~~!
宏代码如下
Sub 求和()
Dim mg As Range
Dim i As Long, k As Long, l As Long, m As Long
On Error Resume Next
Application.DisplayAlerts = False
k = 2 ' 单元格起始
l = 2 ' 单元格步长
i = 1
m = InputBox("求和的总行数", , 20)
Do While k <= m '当k>m时结束do
Do While Cells(l, 1) <> ""
l = l + 1 '当cells(l,1)不为空,l增加1,
Loop
If Cells(l - 1, 1) <> "" Then '当cells(l,1)=空 ,l-1 为空的单元格上边非空单元格的个数
Range(Cells(k, 1), Cells(l - 1, 1)).Select
Cells(l - 1, 2) = WorksheetFunction.Sum(Selection)
Cells(l - 1, 3) = Selection.Count
End If
k = l + 1
l = l + 1
Loop
End Sub
Dim i, rowcount As Long
Dim numcount As Long
Dim numsum As Double
Dim cellsvalue As Variant
'A列最大行数,A列是数据源,如果是B列怎替代A
rowcount = Sheet1.Range("A65536").End(xlUp).Row
'清空计算值
Range("B2:C" & rowcount).ClearContents
If rowcount > 1 Then
For i = 2 To (rowcount + 1)
cellsvalue = Sheet1.Range("A" & i).Value
'是否为空
If IsNull(cellsvalue) Or cellsvalue = "" Then
'写入结果
Sheet1.Range("C" & i - 1) = numcount
Sheet1.Range("B" & i - 1) = numsum
'重置计数器
numcount = 0
numsum = 0
ElseIf IsNumeric(cellsvalue) Then
'是否是数字
numcount = numcount + 1
numsum = numsum + CDbl(cellsvalue)
Else
MsgBox ("存在非数值数据")
Exit Sub
End If
Next
End If
这是一个浮点错误造成的!属于正常“不正常的”!
您可以修复一点点:
功能BTA(VALD由于双人间)
BTA =修复((VALD - 修复(VALD)+ 1E-16)* 60)
结束功能
因为上次使用修复功能,所以+1的E-16,你进入一定精度的自变量,结果不会影响!
类似的错误浮点计算,你可以搜索一下:“Excel的计算错误”
刚做的,希望采纳,点“统计”即可自动统计前600行数据。
用vb编程实现随机产生一个100到999之间的随机数,并将此数逆序输出
VBA编程实现不重复随机数输出。VBA里的随机函数是RND,在工作表中随机函数是RAND,一字之差,可要记好了。RND取值范围是[0,1),意思是0和1之间的一个随机数,包含0,但不包含1。
1、用法
语法:Rnd[(number)]如果 number 的值是 Randomize 生成小于 0 ,每次都使用 number 作为随机数种子得到的相同结果。大于 0 ,以上一个随机数为种子产生下一个随机数。等于 0 ,产生与最近生成的随机数相同的随机数。省略, 以上一个随机数为种子产生下一个随机数(同大于0)。说明:Rnd 函数返回小于 1 但大于或等于 0 的值。number 的值决定了 Rnd 生成随机数的方式。对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器(若带参数,则产生由参数对应的一个特定序列的随机数),该生成器具有根据系统计时器得到的种子。如果不使用Randomize 语句,那么每次执行程序时产生的随机数序列是相同的。
Rnd 后面跟一个负数时,同样的参数可以得到完全相同的两个序列,例如,rnd -1执行后用rnd取1000个随机数,然后再执行rnd -1,然后再用rnd取1000个随机数,这1000个随机数和前面1000个完全相同。为了得到不同的序列,可以用不同的负数,也可以在rnd -1后面执行Randomize number。注意,要得到相同的序列,两次Randomize后面的number必须相同。这种方法用途之一就是用于加密和解密。为了生成某个范围内的随机整数,可使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。注意:若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。
2、无重复随机数算法一
这是最简单的算法,每产生一个随机数,就和已有的比较,如果已经存在,则重新产生。比较适合从一个大范围里面抽出一小部分数据,比如,从题库中抽取试题。
[vb] view plain copy print?
' 产生20个1-100之间的不重复随机数
Public Sub RndNumberNoRepeat1()
Dim RndNumber, temp(20), i, k, Maxrec As Integer
Randomize (Timer) '初始化随机数生成器
Maxrec = 100
' 从A21开始输出随机数
k = 0
Do While k < 20
RndNumber = Int(Maxrec * Rnd) + 1
temp(k) = RndNumber
Cells(k + 21, 1) = RndNumber
For i = 0 To k - 1
If temp(i) = RndNumber Then Exit For
Next i
If i = k Then k = i + 1
'MsgBox "随机数:" & RndNumber
Loop
End Sub
3、无重复随机数算法二
这个算法比较巧妙,需要细细体会,才能知道真谛。这个算法不会重复产生随机数,但需要一个占位数组。比较适合输出范围之内所有数值的场合,比如,随机发牌。
[vb] view plain copy print?
' 产生20个1-100之间的不重复随机数
Sub RndNumberNoRepeat2()
Dim RndNumber, TempArray(99), i As Integer
Randomize (Timer) '初始化随机数生成器
For i = 0 To 99 '产生包含1-100的不重复的随机数列
TempArray(i) = i
Next i
For i = 99 To 80 Step -1
RndNumber = Int(i * Rnd)
'从A21开始输出这些数字
Cells(120 - i, 1) = TempArray(RndNumber) + 1
TempArray(RndNumber) = TempArray(i)
Next i
End Sub
4、无重复随机数算法三
这个算法使用字典对象完成去重复,和第一个算法差不多,但程序看上去简洁一点,嗯,起码新颖一点。
[vb] view plain copy print?
' 产生20个1-100之间的不重复随机数
Sub RndNumberNoRepeat3()
Dim d As Object 'New Dictionary
Dim s As Integer
Randomize (Timer) '初始化随机数生成器
Set d = CreateObject("Scripting.Dictionary")
Do Until d.Count = 20
s = Int(Rnd * 100 + 1)
d(s) = ""
Loop
[a21].Resize(d.Count, 1) = Application.Transpose(d.Keys)
End Sub
附:VBA中Dictionary对象使用小结Dim dict' 创建DictionarySet dict = CreateObject("Scripting.Dictionary")' 增加项目dict.Add "A", 300dict.Add "B", 400dict.Add "C", 500' 统计项目数n = dict.Count' 删除项目dict.Remove ("A")' 判断字典中是否包含关键字dict.exists ("B")' 取关键字对应的值,注意在使用前需要判断是否存在key,否则dict中会多出一条记录Value = dict.Item("B")' 修改关键字对应的值,如不存在则创建新的项目dict.Item("B") = 1000dict.Item("D") = 800' 对字典进行循环k = dict.keysv = dict.ItemsFor i = 0 To dict.Count - 1key = k(i)Value = v(i)MsgBox key & ValueNext' 删除所有项目dict.Removeall实例:
Sub 宏1()Set dic = CreateObject("Scripting.Dictionary") '字典For i = 1 To 10000If Not i Like "*4*" Thendic.Add i, "" '如果不包含“1”End IfNextRange("a2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys) '从A2单元开始向下放置End Sub=========================================================================又 Tranpose工作表函数的用法实例'把一行多列的二维数组转换成一维数组Sub test()Dim arr, arrtarr = Range("a1:j1")arrt = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))StopEnd Sub首先看看TRANSPOSE函数的基础用法。官方帮助说明,TRANSPOSE函数可返回转置单元格区域,即将行单元格区域转置成列单元格区域,反之亦然。 TRANSPOSE函数语法是:TRANSPOSE(array) Array参数是需要进行转置的数组或工作表上的单元格区域。所谓数组的转置就是,将数组的第一行作为新数组的第一列,数组的第二行作为新数组的第二列,以此类推
请问VBA 如果把100个数字,分成10组,每组的和小于50,如何编程
1,首先假设给出的100个数,应该满足你题目的要求:
可以对这100个数求和,除以10,看看是否小于50。
2,尝试这样的解决思路与步骤:
1)把这100个数,按照从小到大排列。
2)然后取序号:1-5,5个数和序号96-100,5个数,组成一组;
接下来取序号 6-10,与 序号 91-95,构成一组;
接下来取序号 11-15,与 序号 86-90,构成一组;
.。。。。。
vba 关于列表框小编程问题 求大神!!
UserForm1
ListBox1
ListBox2
'============================
ListBox1取值你没说;那我就省略了
按纽代码:
Private Sub CommandButton1_Click()
If IsNull(UserForm1.ListBox1.Value) Then Exit Sub
UserForm1.ListBox2.AddItem UserForm1.ListBox1.Value
UserForm1.ListBox1.RemoveItem (UserForm1.ListBox1.ListIndex)
End Sub
控件名称为默认创建的名称.分别是
窗体 userform1,
列表框 listbox1, listbox2
命令按钮 commandbutton1.
Private Sub CommandButton1_Click()
ListBox2.AddItem ListBox1.List(ListBox1.ListIndex) 把左边列表框选中的项目复制到右边列表框
ListBox1.RemoveItem ListBox1.ListIndex ,移除左边列表框中高亮的项目.
End Sub
Private Sub UserForm_Initialize()
'窗体初始化,给listbox1赋值,
ListBox1.List = Split("倚天屠龙记,鹿鼎记,仙剑奇侠传,一地鸡毛", ",") ',给listbox1赋值,
CommandButton1.Caption = "当前项移动到右边" '改变命令按钮显示的文字
End Sub
另外 你说的在另外一个窗体或容器中的启动的按钮(strat按钮)
假设另一个按钮的名称是commandbutton2
代码如下:
Private Sub CommandButton2_Click()
userform1.show
end sub