我的循环脚本通过单个文件工作正常,但我现在需要它也查看/为多个目录.我被困了....
事情需要发生的事情:
这就是我所拥有的,这是行不通的,我知道是错的:
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) 这可能很简单,但我已经搜索了几个小时,但找不到如何删除/省略熊猫中的第 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)
谢谢!
列表框未将所选值分配给"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) 我正在使用格式为"XXXX-000-000-000"的单元格值.
我无法将零保持在正确的位置.
例如:
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
建议?先感谢您!
我试图通过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排序,您需要明确提供所有级别
建议?
我正在尝试将打开的对话框指定为默认为网络上的特定文件夹.让我们使用路径:
\\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) 我希望将这个数据透视表展平,但我无法找到一种方法来删除/隐藏/删除“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) 我有动态项目名称,所以我希望代码:
这是我目前要走的代码路线,但我不确定是否有更简化的方法来做到这一点,而不是创建一个空的数据框并尝试将数据填充到其中?欢迎任何建议,谢谢!
示例 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) 我需要为此单元格复制/粘贴的起始位置创建一个变量,因此我可以将其用作其他数据的参考点.那可能吗?我不确定语法.
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) 这是我需要的代码行,在复制单元格时,将格式保留在目标工作簿中.我不确定如何将"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)