小编H3l*_*lue的帖子

返回数组Excel VBA中元素的索引

我有一个数组prLst是一个整数列表.整数未排序,因为它们在数组中的位置表示电子表格中的特定列.我想知道如何在数组中找到一个特定的整数,并返回其索引.

如果不将数组转换为工作表上的范围,似乎没有任何资源可以显示我.这看起来有点复杂.这对VBA来说是不可能的吗?

arrays indexing excel vba find

50
推荐指数
2
解决办法
23万
查看次数

如果元素是某个值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宏

arrays excel vba element

13
推荐指数
1
解决办法
13万
查看次数

对行组进行排序 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)

sorting excel grouping vba row

5
推荐指数
1
解决办法
7131
查看次数

将变量连接成字符串以在 VBA 中设置为范围

我遇到了特定代码行的问题:

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)

但这并没有帮助(因为我认为它不会)。有什么建议?

variables excel vba concatenation range

2
推荐指数
1
解决办法
6万
查看次数

逻辑回归的代码出错

我正在使用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的新手.

regression r curve-fitting

2
推荐指数
1
解决办法
416
查看次数