小编Cal*_*mDA的帖子

在不回滚其他迁移的情况下回滚特定迁移

我错误地运行了倒数第二次db迁移错误,但最后一次迁移没问题.现在我想回滚我的倒数第二次迁移而不恢复上次迁移.请与我和其他人分享您的知识.

database migration command-line ruby-on-rails

8
推荐指数
2
解决办法
2279
查看次数

VBA 1004循环执行宏时出错

任何人都可以告诉我为什么我会在以下代码中收到1004错误?

如果不清楚,我正在尝试循环所有不是我命名工作表的工作表并尝试选择特定范围并将其复制并粘贴到已编译的"Quant Sheet"中

Dim ws As Worksheet
Dim x As Integer 
Dim y As Integer
Dim a As Integer
Dim b As Integer
Set ws = Worksheets("Quant Sheet")
x = 1
y = 3
a = 3
b = 2

Worksheets("Quant Sheet").Activate
For Each ws In ActiveWorkbook.Worksheets
If (ws.Name <> "Quant Sheet") Then

   ws.Range("A3").Select
   Selection.Copy
   Sheets("Quant Sheet").Select
   Cells(y, 1).Select
   ActiveSheet.Paste
   y = y + 1


End If

Next ws
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

7
推荐指数
1
解决办法
1089
查看次数

如何在Excel UDF中强制参数

我创建了一个接受数组输入的excel UDF.我希望它只允许数组中的偶数个项目.这是代码:(它只是短的所以我会发布所有这些,你可以有一些上下文)

Function SUBSTITUTEMULTI(inputString As String, ParamArray criteria() As Variant) as String

Dim subWhat As String
Dim forWhat As String
Dim x As Single


If UBound(criteria()) Mod 2 = 0 Then
'check whether an even number of arguments is input
MsgBox "You've entered too few arguments for this function", vbExclamation

Else
    x = 0
    For Each element In criteria
        If x = 0 Then
            subWhat = element
        Else
            forWhat = element
            inputString = WorksheetFunction.Substitute(inputString, subWhat, forWhat)
        End If
        x = …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-udf

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

命名范围的一致随机数

背景

接下来我刚才问了一个关于获得一系列不同(但不一定是唯一的)随机数的问题,答案是这样的:

=RANDBETWEEN(ROW(A1:A10)^0,10)
Run Code Online (Sandbox Code Playgroud)

获取1到10之间的10个随机数的数组

问题

如果我使用上面的公式创建一个命名范围(称为"randArray"),我希望我能够多次引用randArray并获得相同的随机数集.当然,每次我按F9或更新工作表时它们都会改变- 但是一起改变.

这就是我得到的,两组完全不同的随机数

在此输入图像描述

我对这种行为并不感到惊讶,但如何在不使用VBA且不将随机数放入工作表的情况下实现这一目标?


如果你有兴趣

此示例旨在成为MCVE.在我的实际情况中,我使用随机数来估计Pi.用户规定要应用多少随机点并获得相应准确的估计.之所以出现这个问题,是因为我还对点进行了绘制,当有少量点时,很清楚地看到估计和图表不代表相同的数据集


更新

我已经将最初的赏金授予@Michael提供了一个有趣且不同的解决方案.我仍然在寻找一个完整的解决方案,允许用户规定使用多少随机点,虽然可能没有完美的答案,但我仍然对任何其他可能的解决方案感兴趣,并且非常乐意进一步提供奖励.

感谢所有迄今为止贡献的人.

arrays random excel excel-formula

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

包括空白单元格在内的平均值

我想对一个范围进行平均,但有些单元格是空白的。单元格应保持空白,有没有办法将它们包含在 中AVERAGE

例如,如果我有 2 个单元格,其中一个为空,另一个为 100,我希望平均值为 50

我怎样才能做到这一点?

excel excel-formula

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

从化学式中提取数字

如果已经提出并回答了这个问题,我很抱歉,但我找不到满意的答案.

我有一个化学公式列表,按顺序包括:C,H,N和O.我想在每个字母之后提取数字.问题是并非所有公式都包含N.但是,所有公式都包含C,H和O. 并且数字可以是单数,双数或(仅在H的情况下)三位数.

因此数据看起来像这样:

  • C20H37N1O5
  • C10H12O3
  • C20H19N3O4
  • C23H40O3
  • C9H13N1O3
  • C14H26O4
  • C58H100N2O9

我想在单独的列中列出列表的每个元素编号.所以在第一个例子中它将是:

20 37 1 5
Run Code Online (Sandbox Code Playgroud)

我一直在努力:

=IFERROR(MID(LEFT(A2,FIND("H",A2)-1),FIND("C",A2)+1,LEN(A2)),"") 
Run Code Online (Sandbox Code Playgroud)

分离出C#.然而,在此之后我被卡住了,因为H#侧面是O或N.

是否有excel公式或VBA可以做到这一点?

excel vba excel-vba excel-formula chemistry

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

用户表单初始化后更新用户表单列表框

有什么方法可以更新子系统外部的ListBoxa吗?UserFormUserform_Initialize

为什么? 我正在构建一个二十一点游戏,并使用列表框告诉用户他们/庄家拥有哪些牌。我希望使用一个简单的 sub ( ShowCards) 将项目添加到列表框中,但我遇到了问题:

在此输入图像描述

Play按钮调用位于普通模块中的PlayBlackjack子组件

Option Explicit

Dim cards As New Collection

Sub ShowGame()
    UFDisplay.Show
End Sub

Sub PlayBlackjack()
    'fill the cards collection with 5 shuffled decks
    PrepareCards

    Dim i As Integer
    Dim userHand As New Collection
    Dim dealerHand As New Collection

    'deal cards (removing the dealt cards from the cards collection)
    For i = 1 To 2
        DealCard cards, userHand
        DealCard cards, dealerHand
    Next i

    ShowCards userHand, UFDisplay.UserHandList <-- …
Run Code Online (Sandbox Code Playgroud)

excel vba userform

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

为什么Excel表格中不允许使用多单元格数组公式?

多单元格数组公式允许您将公式应用于 Excel 中的整个列。例如:

{=B10:B20+C10:C20}
Run Code Online (Sandbox Code Playgroud)

为什么Excel表格中不允许使用多单元格数组公式?在表中,您只能使用单个公式,例如=B10+C10,,,=B11+C11...,但是您可以在行中使用不同的公式。数组公式可以防止这种情况发生。

excel array-formulas

5
推荐指数
0
解决办法
8658
查看次数

VBA 工作表子在另一个工作表中创建命名区域

我有一个需要在另一个工作表中创建命名范围的私有子。它需要保留一个工作表函数,因为它是一个Worksheet_Change子函数。我已经成功地使用此行将范围变量设置为等于另一张纸上的范围:

Set rng2 = Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col))
Run Code Online (Sandbox Code Playgroud)

但是,当我放入rng2代码的其他部分时,它只是指的是活动表中的正确范围。

这是我尝试过的:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _
    "= " & Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)).Address & ""
Run Code Online (Sandbox Code Playgroud)

和:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _
    "=" & rng2.Address & ""
Run Code Online (Sandbox Code Playgroud)

当底部函数作为一个整体位于存储在工作簿中的模块内时,它起作用,但同样,在工作表子中不起作用。我也在Sheets("Lists").rng2.Address底层尝试中尝试过。

excel vba

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

Scripting.Dictionary在不使用Dictionary.Add的情况下添加项目-错误?

当您查找值时,Scripting.Dictionary喜欢无缘无故地添加值!以30秒的示例演示:

创建一个新的工作表,并填写 A1:A4 = {1,2,3,4}

插入一个新的vba模块并添加此代码

Public Sub test()

    Dim rowIndex As Integer
    '
    Dim dict As Scripting.Dictionary
    Set dict = New Scripting.Dictionary

    For rowIndex = 1 To 4

        dict.Add Trim(Sheet1.Cells(rowIndex, 1).Value), rowIndex

        Dim notEvenAddingSoWhyAreYouAdding As Variant
        notEvenAddingSoWhyAreYouAdding = dict(Sheet1.Cells(rowIndex, 1).Value)

    Next rowIndex

End Sub
Run Code Online (Sandbox Code Playgroud)

设置断点 Next rowIndex

运行子并检查的值dict。现在,它具有两个值"1"1,如下图所示:

在此处输入图片说明

什么。的。地狱?!

我意识到我已经Trim(...)在该dict.Add()行中使用了该函数,这意味着正在使用两个不同的键,但是为什么在执行查找时为什么要添加一个额外的值呢?那毫无意义-现在dict.Count无法提供我所期望的价值。

excel vba dictionary runtime-error excel-vba

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