אקסל | בחירת טווח עמודות בכל הטבלאות
-
@למה-מה-קרה
בכל גליון הטווח שצריך לכתוב הוא שונה בהתאם לטבלאות -
@פלורידה השאלה שלך לא מספיק ברורה. לאיזו מטרה אתה רוצה לבחור את העמודות? תפרט מה אתה מבקש להשיג בסופו של דבר. כתבת:
אני צריך את זה לפקודות שיחולו על כל טבלה באשר היא
כיצד יחולו הפקודות, על ידי VBA? אם כן, תוכל לבחור את הטווח על ידי הפונקציה Range.
לדוגמא, כדי לסמן את העמודות B עד E תשתמש בפקודה הבאה:Range("B:E").Select
-
@odeddvir אמר באקסל | בחירת טווח עמודות בכל הטבלאות:
לאיזו מטרה אתה רוצה לבחור את העמודות
דוגמאות:
- אני רוצה לערוך טבלה שתסכם לי את כל הנתונים הנמצאים בעמודה 1 מכל הטבלאות הקיימות בגליון. אני מכניס את הפונקציה הבאה, אבל זה יועיל לי רק ל"טבלה1" אני רוצה שיכלול לי גם את טבלה2 וכו', (בלי לכתוב ידנית את כל השמות של הטבלאות...)
=SUBTOTAL(103,טבלה1[[עמודה2]:[עמודה5]])
- החלת עיצוב מותנה על הטווח הנ"ל. וכן הלאה...
-
@פלורידה לגבי 1, תוכל להגדיר בנוסחא טווח תלת מימדי, דהיינו טווח שחוזר על עצמו ועובר דרך מספר גליונות.
למשל, אם יש לך כמה גליונות כדלהלן:
ואתה רוצה לחשב את סכום העמודה הראשונה בארבעת הגליונות הראשונים (ברכות עד פסחים), תרשום את הנוסחה הבאה:=SUM('ברכות:שבת'!A:A)
שים לב שהנוסחא
SUBTOTAL(103,....)
לא תומכת בטווח תלת מימדי (כפי שכתוב בקישור שהבאתי בהתחלה), אבל תוכל להשתמש בצורה המפורשת:=COUNTA('ברכות:שבת'!A:A)
יתר על כן, תוכל אפילו לציין WildCard (ג'וקר?) כגון כוכבית
*
בשמות הגליונות, כך:=SUM('*גליון*'!A:A)
כדי לבחור בקלות את גליונות 4 עד 7.
לגבי 2, לצערי אין דרך להחיל עיצוב מותנה על טווח תלת מימדי בקלות. כי אין אפשרות לבחור טווח תלת מימדי על ידי GoTo. אבל אולי אחת האפשרויות הבאות יעזרו:
- שימוש במברשת עיצוב כדי לשכפל את העיצוב המותנה, על ידי עיצוב טווח מסויים, בחירת הטווח, הקלקה כפולה על מברשת עיצוב, וסימון של כל הטווחים האחרים, אחד אחד.
- עיצוב גליון אחד כרצונך ואז שכפול שלו לגליון חדש, העיצוב המותנה כבר יהיה קיים שם, אלא שתצטרך לשנות את התוכן בגליונות החדשים כרצונך.
- יש אפשרות גם על ידי קוד VBA, אבל זה די מסורבל להחיל עיצוב מותנה כך...
-
@פלורידה ציינתי לך לעיל שאפשר על ידי VBA.
בדוגמא שהבאת אתה מבקש לבחור את התחומים הבאים:D8:G29 K8:N24 וכו'
כנס לעורך VBA ובחלון ה Immediate תקליד את הפקודה הבאה:
Range("D8:G29, K8:N24").Select
זה לא פתרון מושלם לכל הגליונות, כי מסתמא הטווחים שונים מגליון לגליון.
יש אפשרות לטפל גם בזה:- ניתן לשמור בכל גליון מחרוזת עם הטווחים שלו.
- ניתן לתת שם לטווחים ולבחור אותם לפי השמות.
- ניתן לכתוב קוד שיסרוק את הגליון ויאתר את הטווחים הרצויים, לפי העיצוב, ויבצע בחירה לאחר מכן על הכל.
-
זה הכיוון
Sub LoopThroughAllTablesWorksheet() 'Create variables to hold the worksheet and the table Dim ws As Worksheet Dim tbl As ListObject Set ws = ActiveSheet 'Loop through each table in worksheet For Each tbl In ws.ListObjects 'Do something to the Table.... Next tbl End Sub
וזה המראה מקום
-
-
הקוד הבא אמור לבחור את כל התאים בטבלאות שבגליון הפתוח, לפי עיצוב נבחר:
Public Sub MarkAllTableCellsByFormat(formatPattern As String) Dim tbl As ListObject Dim cl As Range Dim selectedArea As Range For Each tbl In ActiveSheet.ListObjects For Each cl In tbl.Range.Cells If InStr(cl.NumberFormat, formatPattern) Then If selectedArea Is Nothing Then Set selectedArea = cl Else Set selectedArea = Union(selectedArea, cl) End If End If Next cl Next tbl If Not selectedArea Is Nothing Then selectedArea.Select End Sub
בקריאה לפונקציה יש לספק את מחרוזת העיצוב, למשל עבור עיצוב תאריך
"m/d/yyyy"
MarkAllTableCellsByFormat "m/d/yyyy"
-
@פלורידה אפשר לתת שם טווח בכמה גליונות על ידי ציון שם הגליון ולאחריו סימן הקריאה
!
, ולהפריד בין הטווחים על ידי פסיקים,
כלומר כך:[ברכות]!A:B,[עירובין]!C:D
אבל אם ניחשתי נכון מה אתה זומם, אז בעצם אתה מבקש לחבר את הפוסט הזה עם הפוסט הזה, וליצור גיבוי רק של הטווח הפעיל בגליון.
אתה צריך גישה אחרת, כי הדבקה מיוחדת לא עובדת על טווחים מרובים, אפילו באותו הגליון, וכ"ש בגליונות מרובים.
אני סבור שהדרך היחידה לממש את זה היא להעתיק תא-תא בנפרד.אבל כעת אין לי זמן לזה. בעז"ה במוצ"ש בלי נדר.
-
אני התכוונתי במנהל השמות, אם אפשר לקרוא שם במנהל השמות.
אבל כמו שאתה אומר זה לא יעזור.
אני מעלה קובץ שכבר נתתי שמות לטווחים של הסימון בכל גליון (שם הטווח הוא שם הגליון.) (אולי באמת נכון יותר יהיה להמשיך בנושא שם. )
ועוד הערה חשובה. בקבצים הישנים שהעלתי עד היום, לא כל התאים מוגדרים לפי תאריך, והבורר היחיד הנכון הוא שהתאים של הסימון אינם נעולים. בקובץ הזה כבר סודר, שהתאים של הטווח מוגדרים לפי תאריך.
https://send.magicode.me/send-file/file/a8b71a091ae2781816bd4136864d7e5ce8e5039c/view
ותודה רבה לך על העזרה
(באם באמת תמצא זמן לעסוק בזה, אשמח אם תפצל את המודולים לגיבוי ושחזור, כדי שאני יוכל לשים MsgBox לבדיקת שגיאות אם השחזור / גיבוי הצליח /לא הצליח, וכדו'.)