小编Bru*_*yne的帖子

使用VBA和Excel函数,对数不同

我正在尝试获取数字的日志,但看起来像Worksheet函数给出了一个答案,而VBA则是另一个答案.

在VB中,使用Log(Range("A2"))A2为7的地方,我得到了1.94591014905531,这是正确的答案.但是,如果在工作表中,我使用=Log(A2,10)或者=Log10(a2),我得到了0.84509804.这里发生了什么?

excel excel-formula

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

迭代函数的每个键及其值

我有一个正在尝试循环的函数,目的是在这些变量", "后面加上 a 来修改这些变量。

def create_merge(address, city, state_province, country, postal_code, contact, state):
    for key in locals().keys():
        for value in locals().values():
            print(key, value)
Run Code Online (Sandbox Code Playgroud)

这......有点管用,但不是真的。虽然它为我提供了该定义中所有值的正确读数,但它仅显示state键。我明白为什么,因为我在第一个键移动到第二个键之前循环遍历第一个键中的所有值。

我想要的是一个能够产生如下结果的循环:

address 123 My Address
city 
state_province Illinois
country USA
postal_code 12345
contact McGruff
state Illinois
Run Code Online (Sandbox Code Playgroud)

显然,这只是首先列出键,然后列出值。如何一次执行一个键和一个值?

for key in locals().keys():
    print (key)
for value in locals().values():
    print (value)
Run Code Online (Sandbox Code Playgroud)

...print (key, key.values())不起作用。

也不

for key in locals().keys():
    print (key, locals().values())
Run Code Online (Sandbox Code Playgroud)

我想我已经很接近了,但就是无法得到它!感谢您的任何建议/意见。

最后注意:我需要以一种可以查看 是否不为空的方式来执行此操作,如果不为空,则在函数继续之前value修改该值。", "

python-3.x

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

Kendo Grid for Angular 2 Excel导出日期格式

当我们尝试从Kendo UI Grid for Angular导出网格数据时,网格列之一(“日期”列)未格式化实际日期值。这是我的代码。

<kendo-excelexport [data]="products" [group]="group" fileName="products.xlsx" [headerPaddingCellOptions]="headerPaddingCells" #excelexport>
    <kendo-excelexport-column field="dateofService" title="Date(s) of Service" [width]="170"  [cellOptions]="{ format: 'yy-MM-dd hh:mm:ss' }"  >
    </kendo-excelexport-column>
    <kendo-excelexport-column field="memberName"   title="Patient"  [width]="250">
        <ng-template kendoGridExcelTemplate >Bob Woolmer</ng-template>
    </kendo-excelexport-column>
    <kendo-excelexport-column field="provider" title="Provider" [width]="180">
    </kendo-excelexport-column>
    <kendo-excelexport-column field="status" title="Status" [width]="100">
    </kendo-excelexport-column>
    <kendo-excelexport-column field="patientResponsibility" title="You Owe" width="120"   [cellOptions]="{ format: '$#,##0.00',bold:true }">
    </kendo-excelexport-column>
</kendo-excelexport>
Run Code Online (Sandbox Code Playgroud)

服务日期列始终显示“ 2017-09-09T00:00:00”,而不是09/09/2017。

有谁知道如何格式化日期以在角剑道网格的excel导出中只有MM / dd / yyyy吗?

excel grid export kendo-ui-angular2 angular

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

excel vba中大型数据集中纬度/经度之间的最近距离

初学者活套在这里......我正在研究这个井距项目,该项目查看纬度/经度并确定下一个最近的井。我想我可能正在创建一个无限循环,或者程序需要永远运行(它循环遍历 15,000 行)。我的主要努力是试图确保将每个位置与数据集中的每个位置进行比较。从那里我取第二低的距离(因为与自身相比,最低的距离为零)。

Sub WellSpacing()
Dim r As Integer, c As Integer, L As Integer, lastrow As Integer
Dim lat1 As Double, lat2 As Double, long1 As Double, long2 As Double
Dim distance As Double, d1 As Double, d2 As Double, d3 As Double
Dim PI As Double

PI = Application.WorksheetFunction.PI()
L = 2
r = 3
c = 10
lastrow = Sheets("Test").Cells(Rows.Count, "J").End(xlUp).Row

For L = 2 To lastrow
    For r = 2 To lastrow
        lat1 = Sheets("Test").Cells(L, c) …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

如何将lambda函数分解为自己的函数?(Lambda目前有125多个字符)

我有一个lambda函数,我想添加并使其更强大.但是,我也想跟随PEP 8并保持我的线下79个字符,正确的缩进等,但我很难想到如何分割线.

这条线目前是:

styled_df = df.style.apply(lambda x: ["background: rgba(255,0,0,.3)" if('BBC' in x['newsSource'] or 'Wall' in x['newsSource']) and idx==0 else "" for idx, v in enumerate(x)], axis = 1)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以达到这个目的:

styled_df = df.style.apply(
    lambda x: ["background: rgba(255,0,0,.3)" 
        if('BBC' in x['newsSource'] or 'Wall' in x['newsSource']) and
        idx == 0 else ""
        for idx, v in enumerate(x)], axis=1)
Run Code Online (Sandbox Code Playgroud)

但第三行(if('BBC' in ...)与PEP 8(E128)发生冲突.而且,诚然,这不是我打破它的方式最清晰的代码.

另外,我打算为此添加更多条件,我想知道最好的方法是什么.只是继续加入,并尽可能地打破线路?或者对于这样的问题是否存在"最佳实践"?

编辑:正如我想的那样,但是忘记提及,我可能会将这个lambda改成一个函数,但我正在努力解决这个问题.我是lambdas的新手,完全从另一个问题得到了这个...所以是的,同意Lambda是根本问题.

python lambda pep8 python-3.x

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

类型错误:使用 pandas apply 和 lambda 时,字符串索引必须是整数

我有一个数据框,一列是 URL,另一列是名称。我只是尝试添加第三列,该列接受 URL 并创建 HTML 链接。

该列newsSource具有链接名称和urlURL。对于数据框中的每一行,我想创建一个包含以下内容的列:

<a href="[the url]">[newsSource name]</a>
Run Code Online (Sandbox Code Playgroud)

尝试以下会引发错误

文件“C:\Users\AwesomeMan\Documents\Python\MISC\News Alerts\simple_news.py”,第 254 行,位于 df['sourceURL'] = df['url'].apply(lambda x: '{1} '.format(x, x[0]['newsSource']))
TypeError: 字符串索引必须是整数

df['sourceURL'] = df['url'].apply(lambda x: '<a href="{0}">{1}</a>'.format(x, x['source']))
Run Code Online (Sandbox Code Playgroud)

不过我x[colName]以前用过?下面的行工作正常,它只是创建一列源名称:

df['newsSource'] = df['source'].apply(lambda x: x['name'])
Run Code Online (Sandbox Code Playgroud)

为什么突然(对我来说“突然”)它说我无法访问索引?

python lambda series dataframe pandas

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

删除行(向后工作),但使用范围变量?

通常需要您浏览一系列单元格,并根据某些条件删除整行.

在实践中,最好从范围的最后开始,并开始工作.

Dim i as Long
For i = lastRow to 1 Step -1
    If Cells(i, 2).Value = "del" then Rows(i).EntireRow.Delete
End if
Run Code Online (Sandbox Code Playgroud)

但是,大部分时间我都在使用一个Range对象.

有没有办法向后工作,使用范围对象,不需要使用For i类型循环?

Dim rng as Range, cel as Range
Set rng = Range("A1:A100")

For each cel in rng step -1
   if cel.value = "del" then cel.EntireRow.Delete
next cel
Run Code Online (Sandbox Code Playgroud)

这种错误Expected: End of StatementStep -1部分,这是我预期的(没有双关语意).

我的想法是,Cells()在尝试向后处理Range变量时,我基本上不必重新安排数据.我发现使用范围变量一堆有点麻烦,但是当想要从该范围中删除行时,Cells([long],[long])如果有意义则必须切换到使用.

编辑:刚刚提出这个,但它仍然感觉kludgy:

Dim k As Long, cel …
Run Code Online (Sandbox Code Playgroud)

excel vba delete-row

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

VBA - 查找包含特定文本的第一行和最后一行

我有一个很长的(2,000 +行)不同值列表.我试图找到每个值的第一行和最后一行.作为示例(注意:所有数据都在一列中):

Bats
Bats
Bats
Bats
Bats
Bats
Fun
Fun
Fun
Fun
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Bases
Balls
Balls
Balls
Balls
Balls
Balls
Balls
Balls
Run Code Online (Sandbox Code Playgroud)

所以,我想知道找到第一行(从顶部开始)和包含每个单词的最后一行的最快方法是什么.因此,蝙蝠从第1行开始,在第6行结束.乐趣从第7行开始,在第10行结束.

除了我将每个单元格与之前的单元格进行比较的循环之外,还有更快速的方法可以实现这一点,如果它们不同,可以添加行变量吗?

非常感谢任何建议/帮助!

编辑:在VBA中查找如何执行此操作.

excel vba

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

Excel VBA复杂字符串替换

有没有办法在字符串中查找子字符串然后替换该子字符串以及之前和之后的多个字符?

例如,我有这些:

Mandatory659852 y n n TRY RACE
Mechanica888654 y n n FRY SAME
GILLETE685254 y n n CRY FACE
Run Code Online (Sandbox Code Playgroud)

我可以编程VBA来删除子字符串," y n n "包括子字符串左边的6个字符以及它右边的3个字符吗?所以结果应该是:

"Mandatory RACE"
"Mechanica SAME"
"GILLETE FACE"
Run Code Online (Sandbox Code Playgroud)

我无法在Google上搜索,因为我不知道该术语是什么.我知道我可以在VBA中使用.replace来替换子字符串,但我不知道如何使用字符数量的外卡.replace(****** y n n ***)

string excel vba excel-vba

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

循环浏览当前活动工作表中Excel VBA中的所有命名范围

嗨,我想遍历我在activeworksheet中找到的所有命名范围,然后对它们做一些事情。但是,我使用了下面的代码,但似乎什么也没产生。另外,如果我可以遍历包含某些单词的命名范围,那将是很好的。例如,我的命名范围被命名为data1,data2,data3,依此类推。如果它们包含单词数据,我只想对其进行处理。

For Each nm In Activesheets.Names
    MsgBox "nm.name"
Next nm
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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