תוכנה

3.1k נושאים 32.8k פוסטים
  • 0 הצבעות
    5 פוסטים
    210 צפיות

    די מהר מצאתי את הפרוייקט הזה בגיטהב, מלפני שנתיים, נראה לגיטימי: https://github.com/soryy708/il-bank-account-validator. היתה רק בעיה קטנה: הוא כתוב ב-JS.

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

    Option Explicit Function ValidateAccount(bankNumber As Long, branchNumber As Long, accountNumber As Long) As Boolean ' Input validation: If Not IsNonNegativeLong(bankNumber) Then ValidateAccount = False Exit Function End If If Not IsNonNegativeLong(branchNumber) Then ValidateAccount = False Exit Function End If If Not IsNonNegativeLong(accountNumber) Then ValidateAccount = False Exit Function End If ' Supported banks Const YAHAV As Long = 4 Const POST As Long = 9 Const LEUMI As Long = 10 Const DISCOUNT As Long = 11 Const HAPOALIM As Long = 12 Const IGUD As Long = 13 Const OTSAR_AHAYAL As Long = 14 Const MERCANTILE As Long = 17 Const MIZRAHI_TEFAHOT As Long = 20 Const CITIBANK As Long = 22 Const BEINLEUMI As Long = 31 Const ARAVEI_ISRAELI As Long = 34 Const MASAD As Long = 46 Const POALEI_AGUDAT_ISRAEL As Long = 52 ' Adjust branch number For Mizrahi Tefahot If bankNumber = MIZRAHI_TEFAHOT Then If branchNumber > 400 Then branchNumber = branchNumber - 400 End If End If Dim accountNumberDigits() As Long Dim branchNumberDigits() As Long accountNumberDigits = NumberDigitsToArr(CLng(accountNumber), 9) branchNumberDigits = NumberDigitsToArr(CLng(branchNumber), 3) ' Account number validation Dim sum As Long Dim remainder As Long Select Case bankNumber Case LEUMI, IGUD, ARAVEI_ISRAELI sum = ScalarProduct(GetSubset(accountNumberDigits, 8), ToIntArray("1,10,2,3,4,5,6,7")) sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("8, 9, 10")) remainder = sum Mod 100 ValidateAccount = ArrIncludes(ToIntArray("90, 72, 70, 60, 20"), remainder) Case YAHAV, MIZRAHI_TEFAHOT, HAPOALIM sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6")) sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("7, 8, 9")) remainder = sum Mod 11 Select Case bankNumber Case YAHAV ValidateAccount = ArrIncludes(ToIntArray("0, 2"), remainder) Case MIZRAHI_TEFAHOT ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4"), remainder) Case HAPOALIM ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4, 6"), remainder) End Select Case DISCOUNT, MERCANTILE, BEINLEUMI, POALEI_AGUDAT_ISRAEL sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9")) remainder = sum Mod 11 Select Case bankNumber Case DISCOUNT, MERCANTILE ValidateAccount = ArrIncludes(ToIntArray("0, 2, 4"), remainder) Case BEINLEUMI, POALEI_AGUDAT_ISRAEL If ArrIncludes(ToIntArray("0, 6"), remainder) Then ValidateAccount = True Else sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6")) remainder = sum Mod 11 ValidateAccount = ArrIncludes(ToIntArray("0, 6"), remainder) End If End Select Case POST sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9")) remainder = sum Mod 10 ValidateAccount = remainder = 0 Case 54 ' Jerusalem ValidateAccount = True ' wtf? Case CITIBANK sum = ScalarProduct(GetSubset(accountNumberDigits, 8), ToIntArray("2, 3, 4, 5, 6, 7, 2, 3")) ValidateAccount = (11 - sum Mod 11) = accountNumberDigits(1) Case OTSAR_AHAYAL, MASAD sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6")) sum = sum + ScalarProduct(GetSubset(branchNumberDigits, 4), ToIntArray("7, 8, 9")) remainder = sum Mod 11 If remainder = 0 Then ValidateAccount = True End If If bankNumber = MASAD Then If remainder = 2 And ArrIncludes(ToIntArray("154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539"), branchNumber) Then ValidateAccount = True End If sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9")) remainder = sum Mod 11 If remainder = 0 Then ValidateAccount = True Else sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6")) remainder = sum Mod 11 ValidateAccount = remainder = 0 End If End If If bankNumber = OTSAR_AHAYAL Then If ArrIncludes(ToIntArray("0, 2"), remainder) And ArrIncludes(ToIntArray("385, 384, 365, 347, 363, 362, 361"), branchNumber) Then ValidateAccount = True Elseif remainder = 4 And ArrIncludes(ToIntArray("363, 362, 361"), branchNumber) Then ValidateAccount = True Else sum = ScalarProduct(GetSubset(accountNumberDigits, 9), ToIntArray("1, 2, 3, 4, 5, 6, 7, 8, 9")) remainder = sum Mod 11 If remainder = 0 Then ValidateAccount = True Else sum = ScalarProduct(GetSubset(accountNumberDigits, 6), ToIntArray("1, 2, 3, 4, 5, 6")) remainder = sum Mod 11 ValidateAccount = remainder = 0 End If End If End If End Select End Function Function ScalarProduct(arr1() As Long, arr2() As Long) As Long Dim product As Long Dim i As Long Dim maxIndex As Integer maxIndex = UBound(arr1) If maxIndex > UBound(arr2) Then maxIndex = UBound(arr2) For i = 1 To maxIndex product = product + arr1(i) * arr2(i) Next i ScalarProduct = product End Function Function ArrIncludes(arr() As Long, val As Long) As Boolean Dim i As Long If Not IsEmpty(arr) Then For i = LBound(arr) To UBound(arr) If arr(i) = val Then ArrIncludes = True Exit Function End If Next i End If End Function Function NumberDigitsToArr(num As Long, length As Long) As Long() Dim digitsArray() As Long ReDim digitsArray(1 To length) Dim zeroPadding As Integer zeroPadding = length - Len(CStr(num)) Dim i As Long For i = 1 To zeroPadding digitsArray(i) = 0 Next i For i = zeroPadding + 1 To length digitsArray(i) = num Mod 10 num = Int(num / 10) Next i NumberDigitsToArr = digitsArray End Function Function IsNonNegativeLong(num As Variant) As Boolean If VarType(num) = vbLong And num >= 0 Then IsNonNegativeLong = True End If End Function Function GetSubset(arr() As Long, count As Long) As Long() Dim result() As Long ReDim result(1 To count) Dim i As Long For i = 1 To count If i <= UBound(arr) Then result(i) = arr(i) End If Next i GetSubset = result End Function Function ToIntArray(list As String) As Long() Dim temp() As String temp = Split(list, ",") Dim result() As Long ReDim result(1 To UBound(temp) + 1) Dim i As Integer For i = 0 To UBound(temp) result(i + 1) = CLng(temp(i)) Next i ToIntArray = result End Function
  • שלום, יש לי שאלה בנוסחת אקסל:

    2
    0 הצבעות
    2 פוסטים
    176 צפיות

    פיצלת את הפרמטרים ואת התנאים על פני מספר גיליונות, זה קצת מקשה על החישוב, (אגב, את כולם כתבת אחרי 01/01/2024)
    איחדתי הכל לגיליון אחד. ראה בקובץ המצורף את הכיוון. טבלה מרכזית שנותנת תוצאות לפי נוסחת COUNTIFS (נוסחה הסופרת פרט מסוים עם תנאי, ללא הגבלה על מספר התנאים.)
    8931f7bd-2b94-46e8-9d08-beef145dca12-image.png

    קובץ:
    דוח-מכירות.xlsx

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

  • שיתוף: כמה כתובות מייל על גימייל אחד

    12
    22 הצבעות
    12 פוסטים
    994 צפיות

    @אביי כתב בשיתוף: כמה כתובות מייל על גימייל אחד:

    @מנצפכ כתב בשיתוף: כמה כתובות מייל על גימייל אחד:

    לפני כשבוע בערך עשיתי משהו שמוסיף לזיהוי של השליחה עד מאות ואלפי מיילים נוספים או מוחק אותם לפי בחירה אבל התכבה לי המחשב באמצע העבודה בלי שמירה

    ?

    אמרתי משהו לא מובן?

    בכל אופן אני ארחיב
    אפשר לעשות מאות ואלפי זיהויים כמו למשל הכתובת שלי pnhspnhs29@gmail.com
    יכולה להיות ,p.nhspnhs29@gmail.com ,pn.hspnhs29@gmail.com ,pnh.spnhs29@gmail.com ,pnhs.pnhs29@gmail.com ,pnhsp.nhs29@gmail.com ,pnhspn.hs29@gmail.com ,pnhspnh.s29@gmail.com ,pnhspnhs.29@gmail.com ,pnhspnhs2.9@gmail.com ,p.n.hspnhs29@gmail.com p.n.hspnhs29+123@gmail.com וכו׳
    הכנתי משהו שעושה את העבודה ומייצר את כל המיילים האלה ותכננתי גם שייתחבר לגוגל ויכניס אותם לזיהוי אבל בגלל שלא היה לי בזה צורך אמיתי והתכבה לי המחשב באמצע (העבודה נמצאת איפשהו אבל אני לא יודע איפה) אז לא התקדמתי עם זה

  • הוספת מקף בקובץ אקסל

    9
    0 הצבעות
    9 פוסטים
    417 צפיות

    @מוגן כתב בהוספת מקף בקובץ אקסל:

    @Whenever אם אני מזין את נתוני האקסל לתוך תוכנה אחרת, העיצוב תא לא יעזור והנתונים יכנסו ללא השינויים?

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

  • מיון תקיה עם מלא קבצים

    4
    0 הצבעות
    4 פוסטים
    315 צפיות

    @ראש-פינה תנסה אולי למיין את זה עם everything
    מזינים בשורת החיפוש את הנתיב של התיקיה ואז הוא מראה את כל הקבצים שיש בה (צריך להשתמש בסלאשים שמאליים - \ )
    המיון שלה הרבה יותר מהיר משל אקספלורר

  • הורדת תיקייה בודדת מגיטהאב

    2
    0 הצבעות
    2 פוסטים
    371 צפיות

    @האדם-החושב כתב בהורדת תיקייה בודדת מגיטהאב:

    משום מה בזמן האחרון

    https://github.blog/2023-01-20-sunsetting-subversion-support
    הם הורידו את התמיכה ב-8 בינואר

    השאלה היא אם יש דרך אחרת

    יש פה כמה פתרונות, אולי אחד מהם יתאים לך

  • גישה ל Registry מאקסל

    15
    0 הצבעות
    15 פוסטים
    345 צפיות

    אצלי המפתח currntversion לא נמצא ב windows
    רישום.gif

  • תוכנה להמרת אודיו לטקסט

    11
    0 הצבעות
    11 פוסטים
    287 צפיות

    @אלף-שין אשמח לקשר אותך איתו, צור קשר בפרטי

  • alt + tab נהיה מוזר...

    7
    0 הצבעות
    7 פוסטים
    277 צפיות

    @ek0583232948 עזרת לי מאוד!
    אכן הבעיה הייתה ברג'סטרי.
    לתועלת מי שיתקע עם בעיה כזו בעתיד,
    ניתן לתקן בעיה כך:

    בקובץ Reg:

    Windows registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer] "AltTabSettings"=dword:00000000

    בשורת הפקודה:

    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer" /v "AltTabSettings" /t reg_dword /d 0

    וכמובן לבצע הפעלה מחדש של סייר הקבצים:

    taskkill /f /im explorer.exe start explorer.exe

    אני מעלה קובץ Reg, וגם סקריפט בשורת הפקודה שמבצע הכל (כמובן יש להפעיל עם הרשאות ניהוליות).
    Alt+Tab-Window.reg
    Alt+Tab-Window.bat

  • 0 הצבעות
    4 פוסטים
    114 צפיות

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

  • אני לא מצליח לפתוח קובץ

    1
    0 הצבעות
    1 פוסטים
    51 צפיות
    אין תגובות
  • אקסל

    2
    0 הצבעות
    2 פוסטים
    88 צפיות

    בחר את הטבלה, הקלק בימיני, ובחר ב"קבל נתונים מטבלה/מטווח...",
    בחלון שנפתח בחר את העמודה הראשונה והקלק בימני, ושם בחר את "בטל סיבוב על ציר של עמודות אחרות".
    ואז לחץ על "סגור וטען".

  • מאגר מושבת בGithub

    1
    0 הצבעות
    1 פוסטים
    99 צפיות
    אין תגובות
  • ערכים מרובים באקסס

    3
    0 הצבעות
    3 פוסטים
    107 צפיות

    @שואף-לדעת כתב בערכים מרובים באקסס:

    לשם הנוחות יצרתי "שדה ערכים מרובים" שמופיע כתיבת רשימה

    אם בכל זאת יש עדיפות עליונה במבנה הנ"ל,
    אפשר לכתוב קוד שירוץ על כל הרכיבים ברשימה שנבחרו נדמה לי משהו Selected,ItemsSelected
    ולהוציא מהם את הסכומים ולחשב.
    עריכה:
    עיין כאן

  • אקסל | יבוא סיווג לפי תנאי "מכיל"

    19
    1 הצבעות
    19 פוסטים
    428 צפיות

    @amik
    הצלחתי להשתמש עם הנוסחה שלך ללא עמודת עזר (העתקתי אותה כמו שהיא לתוך התנאי):
    fdf28a08-f7ee-4df0-aaa3-fbb7a999f923-image.png

    מצו"ב : סיווג-לפי-תנאי-מכיל3.xlsx

  • 0 הצבעות
    8 פוסטים
    412 צפיות

    @pcinfogmach אני צריך שזה יהיה גם אופליין זאת אומרת על הרשת הפנימית

  • כיצד לראות מה יש בתוך קובץ EXE

    9
    0 הצבעות
    9 פוסטים
    215 צפיות

    @avramk יש בריבו אפשרות לעקוב אחר ההתקנה.

  • 0 הצבעות
    13 פוסטים
    365 צפיות

    @מטעמים כתב באקסל | איך מוסיפים תנאי נוסף בפונקציית XLOOKUP:

    @Whenever

    מעניין מאוד,
    שים לב שאקסל מתייחס לתנאים כפי סדר כתיבתם. (כלומר, אם שמת את התנאי "שם" ראשון, אתה צריך לשים את העמודה של array באותו סדר), ניסיתי להחליף בין התנאים והוא החזיר לי שגיאה.
    ראה בתמונה החלפתי בין המספר לשם:
    bcae3b60-fa8e-4a15-9a12-739373b9db57-image.png

    נכון מאוד,
    אפשר לראות מה אקסל חושב עם בוחרים חלק ספיציפי מהפונצקיה ואז לוחצים F9 (לצאת מזה לוחצים ESC)
    אפשר לראות כמו שאתה אומר שאקסל מחבר את הערכים בסדר שאנו מכנינסים לתוך הפונקציה
    2d627595-3b87-4cff-8d6c-9e9c195990d0-image.png
    e11ce2cf-6db4-44be-b4f8-a1c5eb91551b-image.png

  • יוניקוד בוורד?

    1
    1 הצבעות
    1 פוסטים
    66 צפיות
    אין תגובות
  • תוכנה להכנת קבצי תרגום של תוכנות

    6
    0 הצבעות
    6 פוסטים
    203 צפיות

    לפי המבואר פה https://stackoverflow.com/a/6361695/8997905 אפשר להשתמש ב-qt linguist

בא תתחבר לדף היומי!