דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
Y.Excel.AccessY

Y.Excel.Access

@Y.Excel.Access
אודות
פוסטים
294
נושאים
49
קבוצות
0
עוקבים
2
עוקב אחרי
0

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • הסבר על פורום תכנות המצומצם
    Y.Excel.AccessY Y.Excel.Access

    תגובה: הוראות הצטרפות לפורום התכנות (יש שינוי!)

    ורקע אישי (שם, טלפון, והרקע בגללו אתם מעוניינים להצטרף. במידה וכבר יש לכם ידע, לספר עליו קצת).

    למה צריך לכתוב רקע אישי בפורום תכנות המצומצם?
    למה הוא נועד (למה לא פתוח לכולם וזהו)?
    והאם הפרטים האישיים יוצגו לאחרים בפורום? ואם לא - האם גם האחראים מגלים לנו את פרטיהם האישיים?

    אשמח להבין איך זה עובד...


  • אשמח להמלצה - xlwings (הוספת פייתון באקסל/שיטס)
    Y.Excel.AccessY Y.Excel.Access

    אשמח להמלצה על תוסף קוד פתוח בשם xlwings, עבור הוספת קוד PITHON ב EXCEL וGOOGLE SHEETS. לפעולות מאקרו ופונקציות UDF.
    (במקום APP SCRIPT ו VBA).
    זה נוח ושימושי?


  • ריצה בלופ מהאחרון לראשון בJS
    Y.Excel.AccessY Y.Excel.Access

    @dovid אמר בריצה בלופ מהאחרון לראשון בJS:

    אולם במקרה שאתה עושה עדכון מניה למשתנה במהלך הלולאה אז הרבה יותר נכון להשתמש בלולאת for רגילה, זה אחת הלולאות הוותיקות ביותר ושוריאציה שלה נמצאת כמעט בכל שפת תכנות.

    רציתי לציין עוד מעלה על דרך זו, שבלולאת FOR המשתנה i הרץ על פני הלולאה אינו מאוחסן במשתנה רגיל, אלא הוא מאוחסן במשתנה הקרוב פיזית למעבד. כך שהמהירות אמורה לעלות משמעותית, ובנוסף גם אין צורך לחפש את המשתנה לפי כתובתו כל פעם.
    כך לפחות במעבדים של פון נוימן.

    משא"כ אם כותבים let a, ו ++a.


  • VLOOKUP עם ערך לחיפוש משתנה, אפשרי בלי IF?
    Y.Excel.AccessY Y.Excel.Access

    @OdedDvir מדהים! חידש לי ממש.
    הערה חשובה:
    לפחות לגרסאות היותר ישנות, לחישוב נכון של הנוסחה צריך להקיש בסיום כתיבת הנוסחה CTRL+SHIFT+ENTER לקבלת החישוב כנוסחת מערך.


  • נוסחה בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @בער לכאורה אפשר פשוט, להקצות עמודה בה ייכתב תאריך לטיפול.
    במקום שאתה רוצה ש'יקפוץ' לך - לסנן לפי - אם התאריך של היום קטן או שווה ל'תאריך לטיפול' וגם לא שולם להראות את השורה.
    ואם יש צורך למיין לפי תאריך (או לפי עמודה עמודה נוספת שתיצור בשם 'רמת חשיבות' וכד' כפי רמת היצירתיות שלך...)

    איך?
    עם הפונקציה QUERY.


  • נוסחה בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @בער כתוב לי למטה - מתחת כל פוסט שאני כותב יש הערה עם הכתובת מייל


  • מענה במייל
    Y.Excel.AccessY Y.Excel.Access

    מענין לענין באותו ענין...
    האם פורום תכנות הסגור הוא בתשלום?


  • איך ליצור משתנה גלובלי ב Google sheets
    Y.Excel.AccessY Y.Excel.Access

    @dovid אמר באיך ליצור משתנה גלובלי ב Google sheets:

    אולי אתה צריך את זה PropertiesService.

    כן, זה נשמע בכיוון, תודה רבה.
    אשמח לעוד קישור / חומר על זה למי שיש, עדיין לא ממש הבנתי איך לעבוד עם זה בפועל.


  • איך ליצור משתנה גלובלי ב Google sheets
    Y.Excel.AccessY Y.Excel.Access

    הקוד הסופי באקסל:
    שדרוג אקסל - הוספת משתנים.xlsm
    זה קובץ אקסל עם הקוד. (סופי עד השיפור הבא...)

    כמו שרואים כאן, הצבתי דוגמה שאני מחפש את המקסימום רק אם המינימום גדול מ 1.
    אז לולא המשתנים הייתי אמור לחשב את המינימום פעמיים - אחד ל IF והשני למקרה שהוא באמת לא גדול מאחד, וכשהכלתי אותו בתוך משתנה חסכתי את זה.
    כמובן זו רק דוגמה, כי החישובים יכולים להיות הרבה יותר מסובכים.
    \אני מעתיק כאן את הקוד ישירות:
    מודול קלאס בשם ArrayAsList

    Option Explicit
    Option Base 1
    ' אמנם קבעתי כאן את אופציית ברירת המחדל של המערכים להתחיל ב 1, אך בפועל כשאתחלתי מחדש
    ' את המערכים המקומיים אתחלתי מ 0 כדי למנוע שגיאה בעת מחיקת הערך האחרון או מחיקת כל ערכי המערך
    ' אך באמת ההתייחסות המעשית למערך היא עדיין כמותחל ב 1 = לגבי הלולאות הרצות עליו
    ' כך יוצא שהערך 0 הוא ריק וחסר משמעות לקלאס זה
    
    Private MyArray() As Variant
    Private KeyMyArray() As String
    Private LengthMyArray As Integer
    Private Const LimitMaxCountValueInMyArray = 72
    
    Public Sub Add(Value As Variant, Optional Key As String = "")
    
        Dim i As Integer
        For i = 1 To LengthMyArray
            If KeyMyArray(i) = Key Then MyArray(i) = Value: Exit Sub
        Next i
        
        If LengthMyArray < LimitMaxCountValueInMyArray Then
            ChangeLengthToMyArray 1
            MyArray(LengthMyArray) = Value
            KeyMyArray(LengthMyArray) = Key
        End If
        
    End Sub
    
    Public Function Item(Optional Key As String = "")
        Dim i As Integer
        For i = 1 To LengthMyArray
            If KeyMyArray(i) = Key Then Item = MyArray(i): Exit Function
        Next i
    End Function
    
    Public Sub Remove(Optional Key As String = "")
        Dim i As Integer
        For i = 1 To LengthMyArray
            If KeyMyArray(i) = Key Then
                Dim j As Integer
                For j = LengthMyArray To i + 1 Step -1
                    MyArray(j - 1) = MyArray(j)
                    KeyMyArray(j - 1) = KeyMyArray(j)
                Next j
                ChangeLengthToMyArray -1
                Exit Sub
            End If
        Next i
    End Sub
    
    Public Sub RemoveAll()
        LengthMyArray = 0
        ReDim MyArray(0 To LengthMyArray)
        ReDim KeyMyArray(0 To LengthMyArray)
    End Sub
    
    Public Property Get Length() As Variant
        Length = LengthMyArray
    End Property
    
    Private Sub ChangeLengthToMyArray(Optional StepForChange As Integer = 1)
        LengthMyArray = LengthMyArray + StepForChange
        ReDim Preserve MyArray(0 To LengthMyArray)
        ReDim Preserve KeyMyArray(0 To LengthMyArray)
    End Sub
    

    והפונקציות עצמם במודול רגיל:

    Option Explicit
    Option Base 1
    
    Public Function SubInFunction(ParamArray ReturnOnlyLest() As Variant)
        Dim temp As Variant
        For Each temp In ReturnOnlyLest
            SubInFunction = temp
        Next
        temp = StaticVars("Remove all temp")
    End Function
    
    Public Function SetVar(ByRef Value As Variant, Optional ByRef VarName As String = "") As Variant
    ' לכתוב למשתנה סטטי = ליצור משתנה או לערוך אותו
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        SetVar = StaticVars("Set", VarName, Value)
    End Function
    
    Public Function GetVar(Optional ByRef VarName As String = "") As Variant
    ' לקרוא ממשתנה סטטי = להחזיר את הערך שלו
        GetVar = StaticVars("Get", VarName)
    End Function
    
    Public Function RemoveVar(Optional ByRef VarName As String = "") As Variant
    ' למחוק משתנה סטטי
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        If VarName <> "All" Then
            RemoveVar = StaticVars("Remove", VarName)
        Else
            RemoveVar = StaticVars("Remove all")
        End If
    End Function
    
    Public Function SetTempVar(ByRef Value As Variant, Optional ByRef VarName As String = "") As Variant
    ' לכתוב למשתנה סטטי = ליצור משתנה או לערוך אותו
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        SetTempVar = StaticVars("Set temp", VarName, Value)
    End Function
    
    Public Function GetTempVar(Optional ByRef VarName As String = "") As Variant
    ' לקרוא ממשתנה סטטי = להחזיר את הערך שלו
        GetTempVar = StaticVars("Get temp", VarName)
    End Function
    
    Public Function RemoveTempVar(Optional ByRef VarName As String = "") As Variant
    ' למחוק משתנה סטטי
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        If VarName <> "All" Then
            RemoveTempVar = StaticVars("Remove temp", VarName)
        Else
            RemoveTempVar = StaticVars("Remove all temp")
        End If
    End Function
    
    
    Private Function StaticVars(Optional ByRef ActType As String = "Get", Optional ByRef VarName As String = "", Optional ByRef Value_ForSetOrForRemove As Variant = "") As Variant
    ' האחסון וכל הפעולות על משתנים סטטיים
    ' פונקציה זו היא לפעמים משמשת כשגרה ללא החזרת ערך (רק כך אפשר לעבוד בשפה זו עם משתנים סטטיים)
    Static Vars As New ArrayAsList
    Static TempVars As New ArrayAsList
    Select Case (ActType)
        Case "Get"
            StaticVars = Vars.Item(VarName)
        Case "Set"
            Vars.Add Value_ForSetOrForRemove, VarName
            StaticVars = 0
        Case "Remove"
            Vars.Remove VarName
            StaticVars = 0
        Case "Remove all"
            Vars.RemoveAll
            StaticVars = 0
        Case "Get temp"
            StaticVars = TempVars.Item(VarName)
        Case "Set temp"
            TempVars.Add Value_ForSetOrForRemove, VarName
            StaticVars = 0
        Case "Remove temp"
            TempVars.Remove VarName
            StaticVars = 0
        Case "Remove all temp"
            TempVars.RemoveAll
            StaticVars = 0
    End Select
    
    End Function
    

    (בכוונה אני עובר על המערך של PARAM ARRAY ולא מנסה להשיג את האורך שלו עם UBOUND ו LBOUND כי יש גרסאות באקסל שאין להם את הפונקציות האלו
    גם - משום מה לא עובד על המערך בקלאס = NULL או = NOTHING אז ניסיתי להסתדר...
    הפרמטרים של הפונקציות כולם BYREF בשביל המהירות בלבד. - אין טעם ליצור עוד משתנה (ואני יודע בשNET הקמפול מחשב את זה לבד... אבל בVBA כמדומני שלא.))


  • איך ליצור משתנה גלובלי ב Google sheets
    Y.Excel.AccessY Y.Excel.Access

    אני מנסה ליצור משתנה גלובלי בפונקציה מותאמת אישית (UDF) בשיטס.
    האפשרויות שמצאתי הם להשתמש ב CacheService כמו כאן:

    function GetOfVarGlobal(Key = "_") {
      var ValueGlobal = CacheService.getScriptCache();
      return ValueGlobal.get(Key);
    }
    

    אבל זה רק STRING ואני צריך שיאחסן גם מערכים.

    מה הצורך בדיוק?
    בקידוד בSHEETS ואקסל יש הרבה פעמים צורך להקצות עמודות לערכי ביניים. אני מנסה להכניס אופציה של יצירת משתנים וכך להפוך את הגליון האלקטרוני ליותר דומה לשפת תכנות.
    מה זה מועיל?

    • סדר, בעיקר. גם אפשרות לכתוב הערות.
    • אופטימיזציה של מקום אחסון. לדוגמה בשיטס אפשר רק עד 2 מליון תאים, שזה עלול להגמר בחישובים מסובכים.

    אשמח לדעת

    • האם זה יעיל?
    • והאם זה אפשרי.

    תודה רבה.

    מצרף כאן קוד שלי באקסל (באמצע פיתוח - עדיין לא עובד, אבל אפשר להבין את הכיוון. גם אני רוצה להחליף את הCollection במערכים עם ReDim).
    אשמח להערות.

    Option Explicit
    
    Public Function SubInFunction(ParamArray ReturnOnlyLest() As Variant)
        Dim temp As Variant
        For Each temp In ReturnOnlyLest
            SubInFunction = temp
        Next
        temp = StaticVars("Remove all temp")
    End Function
    
    Public Function SetVar(Value As Variant, Optional Name As String = "") As Variant
    ' לכתוב למשתנה סטטי = ליצור משתנה או לערוך אותו
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        SetVar = StaticVars("Set", Name, Value)
    End Function
    
    Public Function GetVar(Optional Name As String = "") As Variant
    ' לקרוא ממשתנה סטטי = להחזיר את הערך שלו
        GetVar = StaticVars("Get", Name)
    End Function
    
    Public Function RemoveVar(Optional Name As String = "") As Variant
    ' למחוק משתנה סטטי
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        If Name <> "All" Then
            RemoveVar = StaticVars("Remove", Name)
        Else
            RemoveVar = StaticVars("Remove all")
        End If
    End Function
    
    Public Function SetTempVar(Value As Variant, Optional Name As String = "") As Variant
    ' לכתוב למשתנה סטטי = ליצור משתנה או לערוך אותו
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        SetTempVar = StaticVars("Set temp", Name, Value)
    End Function
    
    Public Function GetTempVar(Optional Name As String = "") As Variant
    ' לקרוא ממשתנה סטטי = להחזיר את הערך שלו
        GetTempVar = StaticVars("Get temp", Name)
    End Function
    
    Public Function RemoveTempVar(Optional Name As String = "") As Variant
    ' למחוק משתנה סטטי
    ' פעולה בלבד - נכתב כפונקציה רק כדי שיהיה אפשר להפעיל את זה דרך פונקציות אקסל
        If Name <> "All" Then
            RemoveTempVar = StaticVars("Remove temp", Name)
        Else
            RemoveTempVar = StaticVars("Remove all temp")
        End If
    End Function
    
    
    Private Function StaticVars(Optional ActType As String = "Get", Optional VarName As String = "", Optional Value_ForSetOrForRemove As Variant = "") As Variant
    ' האחסון וכל הפעולות על משתנים סטטיים
    ' פונקציה זו היא לפעמים משמשת כשגרה ללא החזרת ערך (רק כך אפשר לעבוד בשפה זו עם משתנים סטטיים)
    Static Vars As New Collection
    Static VarsName As New Collection
    Static TempVars As New Collection
    Static TempVarsName As New Collection
    
    Select Case (ActType)
        Case "Get"
            StaticVars = GetValueInCollectionOfName(VarName, Vars, VarsName)
        Case "Set"
            SetValueInCollectionOfName Value_ForSetOrForRemove, VarName, Vars, VarsName
            StaticVars = 0
        Case "Get temp"
            StaticVars = GetValueInCollectionOfName(VarName, TempVars, TempVarsName)
        Case "Set temp"
            SetValueInCollectionOfName Value_ForSetOrForRemove, VarName, TempVars, TempVarsName
            StaticVars = 0
        Case "Remove"
            RemoveValueInCollectionOfName VarName, Vars, VarsName
            StaticVars = 0
        Case "Remove temp"
            RemoveValueInCollectionOfName VarName, TempVars, TempVarsName
            StaticVars = 0
        Case "Remove all"
            RemoveAllValueInCollection Vars
            RemoveAllValueInCollection VarsName
            StaticVars = 0
        Case "Remove all temp"
            RemoveAllValueInCollection TempVars
            RemoveAllValueInCollection TempVarsName
            StaticVars = 0
    End Select
    
    End Function
    
    Private Function GetValueInCollectionOfName(NameValue As String, CollectionValues As Collection, CollectionNames As Collection) As Variant
        Dim i As Integer
        For i = 1 To CollectionNames.Count
            If CollectionNames(i) = NameValue Then GetValueInCollectionOfName = CollectionValues.Item(i): Exit Function
        Next i
        GetValueInCollectionOfName = 0
    End Function
    
    Private Sub SetValueInCollectionOfName(Value As Variant, NameValue As String, CollectionValues As Collection, CollectionNames As Collection)
        Dim i As Integer
        For i = 1 To CollectionNames.Count
            If CollectionNames(i) = NameValue Then collection_ApdateValue CollectionValues, i, Value: Exit Sub
        Next i
        
        CollectionValues.Add Value
        CollectionNames.Add NameValue
    End Sub
    
    Private Sub RemoveValueInCollectionOfName(NameValue As String, CollectionValues As Collection, CollectionNames As Collection)
        Dim i As Integer
        For i = 1 To CollectionNames.Count
            If CollectionNames(i) = NameValue Then CollectionValues.Remove i: CollectionNames.Remove i: Exit Sub
        Next i
    End Sub
    
    Private Sub RemoveAllValueInCollection(MyCollection As Collection)
        Dim i As Integer
        For i = 1 To MyCollection.Count
            MyCollection.Remove i
        Next i
    End Sub
    
    Private Sub collection_ApdateValue(MyCollection As Collection, Index As Integer, NewValue As Variant)
        If MyCollection.Count = Index Then
            MyCollection.Add NewValue
            MyCollection.Remove Index
        Else
            MyCollection.Add NewValue, before:=Index + 1
            MyCollection.Remove Index
        End If
    End Sub
    

  • לאחר מפגש עם דודי (מתכנת בתעשייה האווירית) - פוסט פילוסופי: נבואה על עתידו של עולם התוכנה והמחשבים
    Y.Excel.AccessY Y.Excel.Access

    @ארכיטקט אמר בלאחר מפגש עם דודי (מתכנת בתעשייה האווירית) - פוסט פילוסופי: נבואה על עתידו של עולם התוכנה והמחשבים:

    אז הבעיה הזו קיימת בכל העולם, בכל התעשיות, בכל הצבאות, שאף אחד לא יבלבל לי במוח. למטוס F35 יש 25 מיליון שורות קוד, יש מכשירים אזרחיים שיש בהם מעל 100 מיליון שורות קוד, אין שום סיכוי שהדבר הזה בר תחזוקה ובר ידיעה של בן תמותה. הבאגים נוצרים במימשקים, ואז מישהו צריך לדבר עם מישהו שצריך לדבר עם עוד מישהו, חלאס עם ההזיות שזה יעבוד. בינתיים כפי טבעו של העכברוש הוא מנצל את הכסף שמוזרם לתעשיות הללו, לוקחים משכורת ורווחים הביתה, ומשאירים את שברי הכלים לדורות הבאים, מתוך הנחה שהכסף הרב שנצבר יוכל "לפתור כל בעיה" הוא לא! כשאין אנשים שיתחזקו את התוכנות, כסף לא יוכל לייצר אותם נקודה.

    באמת בתחום החומרה צורת בדיקת הבאגים היא על ידי משוואות מתמטיות, כך שכמות הבאגים קטנה מאוד. הסיבה שבתחום התכנות זה לא כך, כי החומרה יקרה, אבל התוכנית לא.
    במידה והמפלצת המדוברת תשתחרר, המקסימום שיקרה שליישומים שאין בהם סובלנות לבאגים כמו התעשייה האווירית הנ''ל יצטרכו 'להמציא את הגלגל מחדש' ולבנות הכל כמו בחומרה - עם משוואות מתמטיות לכל תוכנית.

    באמת SAP היא ממשק לארגונים הכי גדולים, והם מה זה מרובעים... (ניהול תפקידי צוות מאוד קשוח ומסודר), וגם APAP (השפת SERVER של SAP) מאוד פשוטה ובטוחה. אבל כמובן גם הם עדיין לא עברו לבדיקות כאלה יסודיות לפי הידוע לי.


  • מהירות העבודה של גוגל סקריפט
    Y.Excel.AccessY Y.Excel.Access

    @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

    @OdedDvir
    0.9 - 1.5 שניות זה בלי שום גליון... בדיקה פשוטה של תנאי לוגי, והחזרת תשובה. תסתכל בקטע קוד שהבאתי.

    כל פעולה של APP SCRIPT המתקשרת עם SHEETS לוקחת כזה זמן, לא משנה כמה היא פשוטה. ואפילו מאקרו פשוט של 'כתוב ב A1 "אא" ' יקח לו כזה זמן.

    -מה שאומר - לא יודע אם יש לזה פתרון אפשרי.


  • מהירות העבודה של גוגל סקריפט
    Y.Excel.AccessY Y.Excel.Access

    @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

    למעשה זה החלקים היחידים שמתקשרים עם השיטס:

    const sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheetName);
    const table = sheet.getDataRange().getValues();
    

    בהתחלה, כאשר לא מדובר בגליון גדול
    ואז לוגיקה די פשוטה של JS, ובסוף

    for (const [i, call] of row.entries()) {
        if (call !== 'original-value') {
            sheet.getRange(rowIndex + 2, i + 1, 1, 1).setValue([call]);
        }
    }
    

    או:

    sheet.deleteRow(rowIndex + 2);
    

    לכאורה העניין הוא בשימוש ב for עם setValue ולא ב setValues אחד. כי הדבר הכבד כאן הוא הקריאה שוב ושוב לקובץ מקובץ הקוד החיצוני.
    הרחבה - (איך להזין מערך ל SHEETS בקריאה אחת) - https://stackoverflow.com/questions/11495588/write-an-array-of-values-to-a-range-of-cells-in-a-spreadsheet


  • לאחר מפגש עם דודי (מתכנת בתעשייה האווירית) - פוסט פילוסופי: נבואה על עתידו של עולם התוכנה והמחשבים
    Y.Excel.AccessY Y.Excel.Access

    לגבי הטעויות - היקף הידע:
    לא מסכים...
    לפי זה היה צריך להיות שפייתון לא תהיה קיימת ולא פופולרית, כי היא שפה מפורשת, ומרווח הטעויות שם הרבה יותר גדול מהשפות ה'ישנות'.
    ודאי זה לא עכשוי - עם כל הוויכוח הגדול בין OOP לשפות פונקציונליות (הנחשבות יותר בטוחות), עדיין לא נראית דעיכה ב OOP... וכולנו כותבים JS למרות שהיא מזעזעת מבחינת טעויות.

    אני מאמין שיצטרכו לעשות שפות יותר מאורגנות - RUST, V, GO, ELIXIR ועוד הם שפות חדשות שנכתבו גם על מנת לצמצם באגים.

    בדבר אחד יש ממש התקדמות - הטכנולוגיה שמגלה או מתקנת טעויות -

    • הקומפיילרים ובודקי הטעויות שבסביבות העבודה (מי שמכיר את VISUAL STUDIO בגרסאות יותר ישנות מרגיש הבדל מהותי...),
    • האופטימליות בקמפול הקוד - כך שגם אם נכתב קוד זבל הוא קצת מתוקן... מייקוסופט הודיעו שהם 'עדיין לא' הצליחו לשפר את האלגוריתמים של המשתמשים ב NET.
    • וכמובן - הקוד הרב הקיים דווקא מפשט את התהליך. וכנראה ככל שיהיו יותר פרוייקטים עם באגים מהותיים ותחומים שלא סובלניים לבאגים נראה גם צמיחה של קוד בטוח יותר. וכשקוד נוסה כבר קל יותר לתכנת איתו - נדרשים באמת פחות שורות קוד. (כמו שאם תנסה ליצור פורמס חדשים יהיה לך יותר באגים מאשר להשתמש ב C# WINFORM

    לגבי טבע האדם והדופמין:
    הלוואי שאתה צודק, אבל נראה לי שהכיוון דווקא הפוך.
    ואם כן יהיה כדבריך, לא נראה דעיכה בעולם התוכנה אלא צורה אחרת של תוכנות - יותר עוזרות פיזית / מידע חיוני, ופחות בילויים (אינטרנט חסום לכולם... :))

    ונקווה שהמשיח כבר יבוא ויתקן את העולם לשימוש נכון בכל הטכנולוגיה הזו...


  • שגיאה בפונקציית פילטר בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @שמחה-זו-הסיסמא אמר בשגיאה בפונקציית פילטר בגוגל שיטס:

    @OdedDvir
    אני מקווה שהבנתי

    ישנם פונקציות היכולות להחזיר טווח ולשמש כפונקציות מערך (בתוך ARRAYFORMULA), וישנן פונקציות שלא.
    דוגמא לפונקציות שלא:

    • TEXTJOIN
    • AND
    • OR
      פונקציות אלו תמיד יחזירו ערך בודד, כך שאי אפשר להשתמש בהם כלל בתוך פונקציית מערך כי הם יכשילו את המערך ויחייבו אותו להחזיר ערך יחיד.

    נ.ב. אני מאמין שאפשר ליצור אותם כמחזירי טווח בפונקציות UDF או למצוא קוד קיים... אבל לצערי אני עדיין לא מכיר.


  • רעיון לעריכת טבלא בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @Y-Excel-Access אמר ברעיון לעריכת טבלא בגוגל שיטס:

    @שואף אמר ברעיון לעריכת טבלא בגוגל שיטס:

    מחפש רעיון, בלי יותר מידי פיתוח, שיהיה איכשהו אפשר לבחור שורה וזה יפתח טופס עם השמות של השדות, ויהיה אפשר לערוך את הנתונים, ואז ללחוץ אישור וזה יסגור את הטופס ויעדכן את השורה.
    מכירים כזה דבר?
    תודה

    כן, GOOGLE FORMS.
    ולהכין אותו מראש בתשובה אוטמטית לפי השורה הקיימת, כמו שמפורט כאן https://tchumim.com/topic/13268/איך-למלא-forms-מראש-על-ידי-נוסחה-באקסל-נוסח-קישור/3

    אני מבין שהצורך יהיה גם לעדכן לפעמים דרך הSHEETS וגם דרך הטופס, אז ההסבר לקמיה הוא לפי זה.

    אפשרות שניה - הקלדה ישירה דרך GOOGLE SCRIPT:

    • לכתוב מספר שורה (=ARRAYFORMULA(ROW(A:A))) ללא הדבקה כערכים.

    • להוסיף את העמודה של הקישור הממולא מראש כנ"ל במיקום נוח בטבלה.

    • ליצור טריגר שבהגשת טופס תפעל פונקצית GOOGLE SCRIPT. - לפונקציה זו לכתוב פרמטר (נקרא לו Event) שילכוד את הטופס החדש.

    • והפונקציה תכתוב את כל נתוני הטופס בטבלה לפי המספר שורה המופיע בטופס. (צריך קודם לבחור בגליון הנכון, ואז להגדיר עמודה עמודה לפי כותרת)

    • חשוב מאוד באפשרות זו לעשות הרבה IF ו TRY לבדוק שאין באג - שלא נוספה או הוחלפה עמודה בטעות וכו'

    איזו אפשרות עדיפה?
    לי נוח יותר האפשרות הראשונה, למרות שהיא מצריכה לבנות עוד טבלה וצריך להגן על העמודה של המזהה, מ"מ יש תיעוד קל ונוח של כל הטפסים והעריכות, ויש הבדלה ברורה למשתמש (גם המתכנת הוא משתמש :)) בין מקום ששייך בו עריכה למקום שלא, כי זה בטבלה נפרדת.


  • רעיון לעריכת טבלא בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @שואף אמר ברעיון לעריכת טבלא בגוגל שיטס:

    מחפש רעיון, בלי יותר מידי פיתוח, שיהיה איכשהו אפשר לבחור שורה וזה יפתח טופס עם השמות של השדות, ויהיה אפשר לערוך את הנתונים, ואז ללחוץ אישור וזה יסגור את הטופס ויעדכן את השורה.
    מכירים כזה דבר?
    תודה

    כן, GOOGLE FORMS.
    ולהכין אותו מראש בתשובה אוטמטית לפי השורה הקיימת, כמו שמפורט כאן https://tchumim.com/topic/13268/איך-למלא-forms-מראש-על-ידי-נוסחה-באקסל-נוסח-קישור/3

    אני מבין שהצורך יהיה גם לעדכן לפעמים דרך הSHEETS וגם דרך הטופס, אז ההסבר לקמיה הוא לפי זה.

    איך בדיוק הנתונים יעודכנו על ידי מילוי הטופס?
    ליצור מזהה - מספר שורה (=ARRAYFORMULA(ROW(A:A))), להעתיק ולהדביק כערכים (שלא ישתנה כל הזמן המזהה לפי מחיקת שורות). ולהגן על עמודה זו מפני עריכה עתידית.
    לחלק ל 3 גליונות: גליון של הוספה ידנית (מה שעבדת איתו עד עכשיו, הכולל את העמודת המזהה החדשה), גליון של תגובות הטופס, וגליון שלישי = כל התצוגה שעובדים איתה. התצוגה עצמה תהיה רק פונקצייה אחת - פונקציית QUERY המאחדת בין הנתונים הכתובים ידנית לנתונים הכתובים דרך הטופס לפי המזהה - מספר שורה,

    איך לכתוב את פונקציית QUERY - החלק הראשון (הבסיס): הפניה לגליון נתונים ידניים UNION הפניה לגליון תגובות מהטופס ( UNION מתבצע על ידי { ; } ).
    בחלק השני לכתוב את משפט הSQL שלה: WHERE מספר שורה <> "", GROUP BY לפי מספר שורה, וכל הנתונים LAST.
    ו - כמובן ORDER BY לפי מספר שורה.

    הקישור לטופס:
    בגליון תצוגה ליד כל הנתונים - במקום נוח (בהתחלה או בסוף העמודות) ליצור פונקציית מערך של HYPERLINK עם השרשור כמו שמפורט בקישור שהבאתי (כך שייוצרו קישורים לטופס ממולא מראש על פני כל הטבלה, כל שורה לפי הנתונים בשורה שלה),
    כך שבלחיצה על הקישור בשורה שצריכה עריכה הטופס ייטען עם המזהה - המספר שורה ועם כל שאר הנתונים בשורה זו.

    מקווה שהייתי מספיק מובן...

    • במקרה שרוצים להשאיר אופציה... (מחקתי).
      אם רוצים להוסיף שורה בין השורות, תמיד אפשר לכתוב במספר שורה + שבר.
      לדוגמא בין 12 ל 13 לכתוב 12.1, 12.2 וכו', ופשוט.

  • מערכת טלפונית על בסיס תוכנת אנקי
    Y.Excel.AccessY Y.Excel.Access

    @א-ב-ו-ב אמר במערכת טלפונית על בסיס תוכנת אנקי:

    @הפצת-אנקי @Y-Excel-Access @מנצפכ @צבי-10 @צבי-ש
    למי שמבין בענין, ולכל מי שרוצה לזכות בזכויות בפיתוח זה
    עלות פיתוח המערכת היא הון עתק ונשמח בהשתתפותם בעלויות
    ניתן לתרום בנדרים פלוס וכן במענה אנושי
    תרומה בנדרים פלוס:
    בקישור זה
    או בסריקת הקוד QR:
    7755c604-5e4c-4d5f-a49b-1edccf46feac-image.png
    או בקוד 599 תחת השם "תרומה לפיתוח אנקי בטלפון"
    במענה אנושי:
    במס' 04-601-4444

    @א-ב-ו-ב אמר במערכת טלפונית על בסיס תוכנת אנקי:

    @הפצת-אנקי @Y-Excel-Access @מנצפכ @צבי-10 @צבי-ש
    למי שמבין בענין, ולכל מי שרוצה לזכות בזכויות בפיתוח זה
    עלות פיתוח המערכת היא הון עתק ונשמח בהשתתפותם בעלויות
    ניתן לתרום בנדרים פלוס וכן במענה אנושי
    תרומה בנדרים פלוס:
    בקישור זה
    או בסריקת הקוד QR:
    7755c604-5e4c-4d5f-a49b-1edccf46feac-image.png
    או בקוד 599 תחת השם "תרומה לפיתוח אנקי בטלפון"
    במענה אנושי:
    במס' 04-601-4444

    האם ניתן לתרום גם מוח? === האם ניתן לעזור בתכנות של זה?

    אני מאמין שיש כאן הרבה שישמחו לקחת חלק בפתרון בעיות / אלגוריתמים / יצירת חלק מהקוד וכדומה...


  • נוסחה בגוגל שיטס
    Y.Excel.AccessY Y.Excel.Access

    @nach אמר בנוסחה בגוגל שיטס:

    @Y-Excel-Access תתקן במקום שווה >> שונה

    תיקנתי, תודה.

  • 1
  • 2
  • 11
  • 12
  • 13
  • 14
  • 15
  • 13 / 15
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום