Перенос данных из рабочего листа в другой с условиями

Вы можете сделать только CharField, а затем eval . Однако использование eval обычно представляет собой огромный риск для безопасности. Любой код python, который входит в него, будет выполнен, и вы не хотите ничего подобного в веб-приложении.

Другой вариант - иметь систему поиска. Вы могли бы, скажем, иметь CharField с вариантами, соответствующими этому словарю:

models.py
...
slug_treatment = models.CharField(max_length=100, choices=function_choices)
...

И затем:

get_data.py

function_lookup = {
    "year_month": year_month,
    "year_camel_month": year_camel_month
}

processed_slug = function_lookup[data_source.slug_treatment](slug, some_kwargs)

1
задан V. Malla 20 January 2019 в 07:05
поделиться

1 ответ

Разделение на несколько листов

Option Explicit

Sub SplitToMultiWorksheets()

    Const cSheets As String = "Sheet1,Sheet2,Sheet3,Sheet4"
    Const cStr1 As String = "Are"
    Const cStr2 As String = "You"
    Const cStr3 As String = "me"
    Const cFirstR As Long = 1
    Const cCol1 As Variant = "A"
    Const cCol2 As Variant = "B"
    Const cCol3 As Variant = "C"
    Const cCol4 As Variant = "D"
    Const cFirst1 As Long = 12
    Const cFirst2 As Long = 20

    'Const cLast1  As Long = 19
    'Const cLast2 As Long = 29

    Dim vntSheets As Variant
    Dim vnt1(2) As Variant
    Dim vnt2(2) As Variant
    Dim lastR As Long
    Dim i As Long
    Dim wsName As String
    Dim First1 As Long
    Dim First2 As Long


    vntSheets = Split(cSheets, ",")

    For i = 0 To UBound(vnt1)
        vnt1(i) = cFirst1 - 1
        vnt2(i) = cFirst2 - 1
    Next

    With ThisWorkbook.Worksheets(vntSheets(0))
        lastR = .Cells(.Rows.Count, cCol1).End(xlUp).Row
        For i = cFirstR To lastR
            If .Cells(i, cCol1) = cStr1 Then
                wsName = vntSheets(.Cells(i, cCol2) - 1)
                Select Case .Cells(i, cCol3)
                    Case cStr2
                        First1 = vnt1(.Cells(i, cCol2) - 2) + 1
                        vnt1(.Cells(i, cCol2) - 2) = First1
                        .Parent.Worksheets(wsName).Cells(First1, cCol3) _
                                = .Cells(i, cCol4)
                    Case cStr3
                        First2 = vnt2(.Cells(i, cCol2) - 2) + 1
                        vnt2(.Cells(i, cCol2) - 2) = First2
                        .Parent.Worksheets(wsName).Cells(First2, cCol3) _
                                = .Cells(i, cCol4)
                End Select
            End If
        Next
    End With

End Sub
0
ответ дан VBasic2008 20 January 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: