小编doc*_*jay的帖子

VBA - Range.Row.Count

我写了一个简单的代码来说明我的困境.

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.只是感觉有点傻,不得不做这样的事情.

excel vba excel-vba

26
推荐指数
3
解决办法
47万
查看次数

条件增量 tidyverse

我一直在谷歌上搜索如何在 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)

r dplyr

4
推荐指数
1
解决办法
869
查看次数

VBA - 获取任务栏应用程序

我在网上找到了一个代码:

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)

excel winapi vba excel-vba

3
推荐指数
1
解决办法
3764
查看次数

R-(Tidyverse)将多个观测值压缩为一个

我有一个包含多个变量的数据集,其中两个是日期(开始日期,结束日期)。有时,日期间隔已分成多个序列,例如,您将有:

开始: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)

r lubridate dplyr tidyverse

3
推荐指数
1
解决办法
208
查看次数

指针函数混淆C++

我正在努力通过跳转到C++,我刚刚到达指针部分,因此,我的第一面墙.我正试图解决这个问题:

问题13.4

编写一个带有两个输入参数的函数,并为调用者提供两个单独的结果,一个是两个参数相乘的结果,另一个是添加它们的结果.由于您只能直接从函数返回一个值,因此您需要通过指针或引用参数返回第二个值.

我真的不明白这个问题.我需要编写一个函数,例如:

int function(int x, int y){
    int addition = x + y;
    int multi = x * y;
}
Run Code Online (Sandbox Code Playgroud)

但是,因为我不完全理解我不知道如何适应指针的问题.如果有人能为我愚蠢,我将不胜感激.

谢谢你的时间!

c++ pointers

0
推荐指数
1
解决办法
286
查看次数

标签 统计

dplyr ×2

excel ×2

excel-vba ×2

r ×2

vba ×2

c++ ×1

lubridate ×1

pointers ×1

tidyverse ×1

winapi ×1