我写了一个简单的代码来说明我的困境.
Sub test()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim k As Long
k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
End Sub
Run Code Online (Sandbox Code Playgroud)
会发生什么:我们计算包含从A1开始的值的行.如果包含值的行数> 1,则代码效果很好.但是,如果A1是唯一包含任何值的单元格,则k = 1,048,576,我猜这是Excel中允许的最大行数.
为什么k = 1?
图片:


编辑:我正在使用的解决方法如下:
Sub test()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Sheet1")
Dim k As Long
k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count
If k = 1048576 Then
k = 1
End If
MsgBox (k)
End Sub
Run Code Online (Sandbox Code Playgroud)
因为当值为1的行数时,k总是等于1048576.只是感觉有点傻,不得不做这样的事情.
我一直在谷歌上搜索如何在 tidyverse 中有条件地递增,但没有成功。我想要做的是检查列中的值是否大于 some x,如果是,则将整数加一。每个观察都从 1 开始。
示例代码:
id = c(1, 1, 1, 2, 3, 3, 3, 3, 4)
time = c(20, 30, 101, 33, 50, 101, 30, 110, 30)
df_x = data.frame(id = id, time = time)
Run Code Online (Sandbox Code Playgroud)
输出:
id time
1 1 20
2 1 30
3 1 101
4 2 33
5 3 50
6 3 101
7 3 30
8 3 110
9 4 30
Run Code Online (Sandbox Code Playgroud)
期望的输出:
increment = c(1, 1, 2, 1, 1, 2, 2, 3, …Run Code Online (Sandbox Code Playgroud) 我在网上找到了一个代码:
Public Sub showProcesses()
Dim W As Object
Dim ProcessQuery As String
Dim processes As Object
Dim process As Object
Set W = GetObject("winmgmts:")
ProcessQuery = "SELECT * FROM win32_process"
Set processes = W.execquery(ProcessQuery)
For Each process In processes
MsgBox process.Name
MsgBox process.Description
Next
Set W = Nothing
Set processes = Nothing
Set process = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)
它打印出所有活动进程的名称和描述.
例:
OUTLOOK.EXE
EXCEL.EXE
但是,任务管理器中还有另一个选项卡显示应用程序(在任务栏中找到相同的选项卡).我想创建一个读取其名称的程序.
例:
在我的任务栏Chrome,Outlook和Excel是打开的应用程序,所以我希望我的程序打印出来:
Microsoft Excel - Book1
收件箱 - Somerandomemail@thisisnotreal.yzbbr
VBA - 获取任务栏应用程序(< - Chrome)
我有一个包含多个变量的数据集,其中两个是日期(开始日期,结束日期)。有时,日期间隔已分成多个序列,例如,您将有:
开始:1990-12-12,停止:1990-12-13开始:1990-12-13,停止:1990-12-14
而不是
开始:1990-12-12,停止:1990-12-14
我要做的是隔离这些序列链,并将它们基本上折叠成一个观察值,这样就保存了序列末尾的所有观察值,其余的则被覆盖(第一个开始日期除外)。以下是一个基本示例:
library(tidyverse)
library(lubridate)
tib_ex <- tibble(
id = rep(1,5),
date1 = ymd(c('1990-11-05', '1990-12-01',
'1990-12-05', '1990-12-08',
'1990-12-15')),
date2 = ymd(c('1990-11-28', '1990-12-05',
'1990-12-08', '1990-12-12',
'1990-12-31')),
var1 = 2:6,
var2 = 7:11,
var3 = 12:16,
var4 = c(0, 1, 0 ,0, 1)
)
Run Code Online (Sandbox Code Playgroud)
这将产生以下提示:
# A tibble: 5 x 7
id date1 date2 var1 var2 var3 var4
<dbl> <date> <date> <int> <int> <int> <dbl>
1 1 1990-11-05 1990-11-28 2 7 12 0
2 1 1990-12-01 1990-12-05 3 8 13 …Run Code Online (Sandbox Code Playgroud) 我正在努力通过跳转到C++,我刚刚到达指针部分,因此,我的第一面墙.我正试图解决这个问题:
问题13.4
编写一个带有两个输入参数的函数,并为调用者提供两个单独的结果,一个是两个参数相乘的结果,另一个是添加它们的结果.由于您只能直接从函数返回一个值,因此您需要通过指针或引用参数返回第二个值.
我真的不明白这个问题.我需要编写一个函数,例如:
int function(int x, int y){
int addition = x + y;
int multi = x * y;
}
Run Code Online (Sandbox Code Playgroud)
但是,因为我不完全理解我不知道如何适应指针的问题.如果有人能为我愚蠢,我将不胜感激.
谢谢你的时间!