小编Mik*_*ike的帖子

循环访问用户指定的根目录中的子文件夹和文件

我的循环脚本通过单个文件工作正常,但我现在需要它也查看/为多个目录.我被困了....

事情需要发生的事情:

  • 提示用户选择所需内容的根目录
  • 我需要脚本来查找该根目录中的任何文件夹
  • 如果脚本找到一个,它会打开第一个(所有文件夹,因此文件夹没有特定的搜索过滤器)
  • 打开后,我的脚本将遍历文件夹中的所有文件并执行它需要执行的操作
  • 它完成后关闭文件,关闭目录并移动到下一个,等等.
  • 循环直到所有文件夹都被打开/扫描

这就是我所拥有的,这是行不通的,我知道是错的:

MsgBox "Please choose the folder."
Application.DisplayAlerts = False
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "\\blah\test\"
    .AllowMultiSelect = False
    If .Show <> -1 Then MsgBox "No folder selected! Exiting script.": Exit Sub
    CSRootDir = .SelectedItems(1)
End With
folderPath = Dir(CSRootDir, "\*")

Do While Len(folderPath) > 0
    Debug.Print folderPath
    fileName = Dir(folderPath & "*.xls")
    If folderPath <> "False" Then
        Do While fileName <> ""
            Application.ScreenUpdating = False
            Set wbkCS = Workbooks.Open(folderPath & fileName)

            --file loop …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

11
推荐指数
2
解决办法
7万
查看次数

如何从 Pandas 的数据框中删除/省略计数列?

这可能很简单,但我已经搜索了几个小时,但找不到如何删除/省略熊猫中的第 1 列(计数列)?

目前看起来像:

    ID     Test1    Test2   Test3
1   236    data1    data2   data3   
2   323    data4    data5   data3
3   442    data6    data2   data4
4   543    data8    data2   data3
5   676    data1    data8   data4
Run Code Online (Sandbox Code Playgroud)

需要看起来像:

ID     Test1    Test2   Test3
236    data1    data2   data3   
323    data4    data5   data3
442    data6    data2   data4
543    data8    data2   data3
676    data1    data8   data4
Run Code Online (Sandbox Code Playgroud)

代码片段:

df = df[['ID','Test1','Test2','Test3']]
df.sort_values(['ID'], ascending=[True], inplace=True)
return render_template('index.html', data=df.to_html(index_names=False))
Run Code Online (Sandbox Code Playgroud)

谢谢!

python pandas

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

循环通过多选列表框值来创建和命名工作簿

列表框未将所选值分配给"n".无论我是否从列表框中选择值,"n"值都是0.我正在学习,所以我可能会想到一些简单的东西...建议?谢谢!

Private Sub UserForm_Initialize()

With cbomonth
    .AddItem "January"
    .AddItem "February"
End With
With cboyear
    .AddItem "2013"
    .AddItem "2014"
End With
With cboteam
    .AddItem "Team1"
    .AddItem "Team2"
End With
With cbodocument
    .AddItem "Task1"
    .AddItem "Task2"
End With
With ListBox1
.AddItem "Name"
.AddItem "Name"
End With
cboteam.ListIndex = 0
cboyear.ListIndex = 4
cbomonth.ListIndex = 6
cbodocument.ListIndex = 1

End Sub

Private Sub cmdSubmit_Click()

    Dim year As String
    Dim month As String
    Dim days As Integer
    Dim team As String
    Dim n as …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

减少字符串并保持零完整

我正在使用格式为"XXXX-000-000-000"的单元格值.

  • 第一个连字符之前的所有内容都需要删除,我可以这样做.
  • 字符串的其余部分需要使用连字符减少为整数,并删除任何额外的零.

我无法将零保持在正确的位置.

  • AD12-002-020-34需要看起来像这样:2-20-34
  • CA1-002-101-001需要如下所示:2-101-1
  • AD12-002-020-10需要看起来像这样:2-20-10

例如:

dim ir as range

ir = "AD12-002-020-100"

ir1 = InStr(ir, "-")
ir2 = InStrRev(ir, "-")
ir.Offset(0, 1) = Mid(ir, ir1 + 1, ir2 - ir1 + 3)
Run Code Online (Sandbox Code Playgroud)

这给了我:002-020-100

建议?先感谢您!

excel vba excel-vba excel-formula

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

按边距('All')值列对Pandas Pivot Table进行排序

我试图通过pandas数据透视表中的行总和对最后一列/ margin/aggrfunc进行降序排序.我知道我在这里缺少一些简单的东西,但我无法弄明白.

dataframe/pivot表:

WIDGETS         
DATE    2/1/16  2/2/16  2/3/16  All
NAME                
PERSON1 43      5               48
PERSON2         4       7       11
PERSON3         56      143     199
Run Code Online (Sandbox Code Playgroud)

我需要做的还是通过aggfunc/margin来排序:

WIDGETS         
DATE    2/1/16  2/2/16  2/3/16  All
NAME                
PERSON3         56      143     199
PERSON1 43      5               48
PERSON2         4       7       11

pt = pd.pivot_table(df,values=['WIDGETS'],index=['NAME'],columns=['DATE'],aggfunc=len,fill_value='',margins=True,margins_name='WIDGETS')
pt.sort_values(by='WIDGETS',ascending=False,inplace=True)
Run Code Online (Sandbox Code Playgroud)

错误: ValueError:无法按多列索引中的列WIDGETS排序,您需要明确提供所有级别

建议?

python pivot-table dataframe pandas

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

打开Dialog默认为指定的网络路径(不是驱动器)

我正在尝试将打开的对话框指定为默认为网络上的特定文件夹.让我们使用路径:

\\test\yes\no\
Run Code Online (Sandbox Code Playgroud)

下面的代码不起作用,但也没有错误.我无法弄清楚我做错了什么.

Private Declare Function SetCurrentDirectory _
Lib "kernel32" _
Alias "SetCurrentDirectoryA" ( _
ByVal lpPathName As String) _
As Long

SetCurrentDirectory "\\test\yes\no\"
Run Code Online (Sandbox Code Playgroud)

我已经看到人们这样做的几种方式,但似乎没有什么对我有用.如果有帮助,我正在使用excel 2010.

我的目录代码:

With Application.FileDialog(msoFileDialogFolderPicker)
    SetCurrentDirectory "\\test\yes\no\"
    .AllowMultiSelect = False
        If .Show <> -1 Then MsgBox "No folder selected! Exiting script.": Exit Sub
    myDir = .SelectedItems(1)
        End With

    MsgBox "Please choose the folder."
    Application.DisplayAlerts = False
        '*********************************************************************************************
    'Check for .xls cutsheets; open one at a time with a loop until all file data has been copied …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

如何展平 python/pandas 数据透视表并操作列名?

我希望将这个数据透视表展平,但我无法找到一种方法来删除/隐藏/删除“ID”的多索引行。

相关代码:

df = df [['B1','B2','B3','B4']]
df = pd.pivot_table(df,values=['BUCKET'],index=['ID'],columns=['TYPE'],aggfunc=len,fill_value='',margins=True)
Run Code Online (Sandbox Code Playgroud)

其中产生:

      BUCKET
TYPE  B1     B2       B3      B4
ID
1     236    data1    data2   data3   
2     323    data4    data5   data3
3     442    data6    data2   data4
4     543    data8    data2   data3
5     676    data1    data8   data4
Run Code Online (Sandbox Code Playgroud)

以下行通过删除第一行让我更近一步

df.columns = df.columns.droplevel(0)
Run Code Online (Sandbox Code Playgroud)

其中产生:

TYPE  B1     B2       B3      B4
ID
1     236    data1    data2   data3   
2     323    data4    data5   data3
3     442    data6    data2   data4
4     543    data8    data2   data3
5     676    data1    data8   data4
Run Code Online (Sandbox Code Playgroud)

我需要进一步展平数据透视表并删除“TYPE”行标题,将其替换为“ID”,然后隐藏/删除前一个“ID”行,使其看起来像这样干净整洁:

ID …
Run Code Online (Sandbox Code Playgroud)

python pivot-table pandas

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

如何将唯一行的 Pandas 数据框列转换为单独的列标题、计数并对相邻行值求和?

我有动态项目名称,所以我希望代码:

  • 确定每个用户/日期找到的所有项目名称
  • 创建找到的唯一项目的列标题
  • 对每个用户/日期找到的项目进行计数和求和
  • 每个用户/日期找到的项目数的总和分钟

这是我目前要走的代码路线,但我不确定是否有更简化的方法来做到这一点,而不是创建一个空的数据框并尝试将数据填充到其中?欢迎任何建议,谢谢!

示例 df:

Name    Date        Item    Minutes
Dave    10-02-2017  item1   3
Dave    10-02-2017  item2   5
Joe     10-02-2017  item3   2
Dave    10-02-2017  item2   1
Dave    10-02-2017  item2   2
Marcia  10-02-2017  item1   5
Amy     10-02-2017  item2   3
Run Code Online (Sandbox Code Playgroud)

代码:

#find unique values in df column
unique_df = pd.DataFrame(df['Item'].unique())
#number length of unique rows
unique_df_len = len(unique_df)
#create empty dataframe using unique number of items discovered
new_df = pd.DataFrame([(0,)*unique_df_len])
#replace columns headings with unique row value names
new_df.columns = …
Run Code Online (Sandbox Code Playgroud)

python-2.7 pandas

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

为单元格位置创建变量

我需要为此单元格复制/粘贴的起始位置创建一个变量,因此我可以将其用作其他数据的参考点.那可能吗?我不确定语法.

wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy

With wbkVer.Worksheets("Cutsheets")
   .Range("A" & .Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

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

使用"复制目标"和"选择性粘贴"保持格式

这是我需要的代码行,在复制单元格时,将格式保留在目标工作簿中.我不确定如何将"PasteSpecial Paste:= xlPasteValues"这样的内容合并到其中.

wbkOut.Worksheets(1).Range("E44:E2000").Copy Destination:=wbkVer.Worksheets("Metabuild").Range("A" & wbkVer.Worksheets("Metabuild").Range("A65536").End(xlUp).Row + 1)
Run Code Online (Sandbox Code Playgroud)

excel vba

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