我有一个数组prLst是一个整数列表.整数未排序,因为它们在数组中的位置表示电子表格中的特定列.我想知道如何在数组中找到一个特定的整数,并返回其索引.
如果不将数组转换为工作表上的范围,似乎没有任何资源可以显示我.这看起来有点复杂.这对VBA来说是不可能的吗?
我有一个prLst()可变长度的全局数组.这需要在数字作为字符串"1"来Ubound(prLst).但是,当用户输入时"0",我想从列表中删除该元素.我编写了以下代码来执行此操作:
count2 = 0
eachHdr = 1
totHead = UBound(prLst)
Do
If prLst(eachHdr) = "0" Then
prLst(eachHdr).Delete
count2 = count2 + 1
End If
keepTrack = totHead - count2
'MsgBox "prLst = " & prLst(eachHdr)
eachHdr = eachHdr + 1
Loop Until eachHdr > keepTrack
Run Code Online (Sandbox Code Playgroud)
这不起作用.prLst如果元素是"0"?如何有效删除数组中的元素?
注意:这是较大程序的一部分,可在此处找到相关说明:排序行组Excel VBA宏
我无法弄清楚如何在 VBA 中创建排序算法来对行组(一次多行)进行排序和交换。我使用下面的数组编写了一个成功的排序算法:
Function SortArray(ByRef arrToSort As Variant)
Dim aLoop As Long, aLoop2 As Long
Dim str1 As String
Dim str2 As String
For aLoop = 1 To UBound(arrToSort)
For aLoop2 = aLoop To UBound(arrToSort)
If UCase(arrToSort(aLoop2)) < UCase(arrToSort(aLoop)) Then
str1 = arrToSort(aLoop)
str2 = arrToSort(aLoop2)
arrToSort(aLoop) = str2
arrToSort(aLoop2) = str1
End If
Next aLoop2
Next aLoop
SortArray = arrToSort
Run Code Online (Sandbox Code Playgroud)
(其中每个元素都是数组的一个元素)但现在我想通过交换行或行组进行排序。我将在下面解释我的意思。
我有一个工作表,上面有标题,下面有几行数据:

我想编写一个与上述算法类似的命令。但是,我想交换整组行,而不是交换数组的元素。Header3((可以是任何字符串)决定分组。工作表上的所有组都是单独排序的,一个分组。
为了交换分组的行,我编写了以下子 RowSwapper(),它接收包含要交换的行的两个字符串。(例如以 rws1 = "3:5" 的形式)。
Public Sub RowSwapper(ByVal rws1 As String, …Run Code Online (Sandbox Code Playgroud) 我遇到了特定代码行的问题:
ActiveSheet.Range("A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount)
Run Code Online (Sandbox Code Playgroud)
其中字母表是包含大写字母 A 到 Z 的字符串。
我不断收到以下错误:
Run-time error '5':
Invalid Procedure call or argument
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个字符串“inRange”并将代码更改为:
inRange = "A" & rowCount & ":" & Mid(alphabet, totHdrLngth, 1) & belowRowCount
curRange = ActiveSheet.Range(inRange)
Run Code Online (Sandbox Code Playgroud)
但这并没有帮助(因为我认为它不会)。有什么建议?
我正在使用PopulationGrowth.csv编写以下脚本:
dat <-read.csv("/Path/PopulationGrowth.csv")
class = "data.frame", row.names=c(NA,-16L)
m1 <- nls(pop~SSlogis(Year,asym,xmid,scal),data=dat)
par(las=1,bty="l",mar=c(5,6,2,2)+0.1) ## graphics tweaks
with(dat,plot(CentralOakland~Year,ylab=""))
mtext("Population",side=2,las=0,line=4)
yearvec <- 1940:2010
lines(yearvec,predict(m1,newdata=data.frame(Year=yearvec)))
Run Code Online (Sandbox Code Playgroud)
在最后一行之后,我收到以下错误:
Error in predict(m1, newdata = data.frame(Year = yearvec)) : object 'm1' not found
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的数据:
Year CentralOakland
1940 7852
1950 8452
1960 6701
1970 6135
1980 5872
1990 5406
2000 5281
2010 6086
Run Code Online (Sandbox Code Playgroud)
我还试图预测未来30年的人口趋势.有理由相信人口将在未来30年内增加.预测这个有什么功能?
忍受我,我是R的新手.