แต่ละ Class เมื่อ Level Up ถึงจุดหนึ่ง จะสามารถเลือก Feat ได้ (ขึ้นกับ Class Level ไม่ใช่ Character Level)เพื่อกำหนดแนวทางพัฒนาความสามารถของตัวละครได้หลายแบบ (ทุก Class มี Feat. ให้เลือกแบบเดียวกัน)
โดยที่แต่ละ Class จะมีจุดที่เลือก Feat. ได้หลายรอบ
ทุก Class สามารถเลือก Feats ได้ตอน Level 4, 8 และ 12
วิธีแกะสูตรนี้ถ้าเรายังใช้ Excel เก่า ก็อาจต้องใช้เครื่องมือ Formula -> Evaluate Formula ซึ่งจะแสดงขั้นตอนการทำงานทีละขั้นตอน ซึ่งอาจไม่สะดวกนักเพราะเราไม่สามารถตรวจเช็คแต่ละส่วนได้ตามใจ
ฟังก์ชัน MATCH ใช้เพื่อหาตำแหน่งของค่า 0 ในอาร์เรย์ที่ได้จาก COUNTIFS ซึ่งหมายถึงตำแหน่งที่ค่าจากคอลัมน์ B ยังไม่ปรากฏในคอลัมน์ C ด้านบนของเซลล์ปัจจุบัน
ฟังก์ชัน IFERROR ใช้เพื่อจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นจากการใช้ MATCH ซึ่งหากไม่มีค่าที่ตรงกับเงื่อนไขเลย (เช่น ทุกค่าจากคอลัมน์ B ปรากฏในคอลัมน์ C แล้ว) ฟังก์ชัน MATCH จะคืนค่า #N/A ซึ่งจะทำให้ INDEX เกิดข้อผิดพลาด
ถ้าแกะสูตรแบบละเอียดเอง ผมแนะนำให้ใช้ Excel Labs: Advanced Formula Environment ช่วยจัดระเบียบสูตรให้อ่านง่ายขึ้น
การจัดแบบนี้เห็นชัดว่า c, d คือการประกาศตัวแปร และใช้ HSTACK ตั้ง List วันที่โปรแกรมไว้เรียบร้อย แล้วตามด้วยการใช้ INDEX ดึงข้อมูลที่เหมาะสมออกจาก C2:D7
ลองถาม AI ดูว่า ThepExcel GPT ว่ามันจะช่วยเราได้ไหม?
มาเลยเพื่อนๆ ดูที่สูตรนี้ AI บอกว่าฟังก์ชัน LET มีขั้นตอนในการจัดการข้อมูลในตาราง
มาดูแต่ละส่วนในสูตรทีละหน่อย
ทำไมมันถึงซับซ้อน?
หลังจากทำงานเสร็จ สูตรนี้จะคืนค่าสำหรับตารางที่มีวันที่ในคอลัมน์ A และวันที่ใกล้เคียงใน C2 ร่วมกับ Vendor
บางที AI เจอบางส่วนที่เข้าใจยาก ให้ AI ลองอธิบายเพิ่มดูดีไหม?
ได้ครับ มาดูอย่างละเอียด:
ส่วนนี้เหมาะสำหรับหาวันที่ใกล้เคียงที่สุดในช่วง d (Delivery Date) และหาค่าเฉลี่ยจากตำแหน่งสองตำแหน่งที่ใกล้เคียงที่สุด:
สรุป:
ส่วนนี้ของสูตรทำให้หาตำแหน่งที่ใกล้ที่สุดในวันที่จากช่วง d โดยดูค่าเฉลี่ยตำแหน่งสองจุดที่ใกล้เคียงที่สุด ลดความเบี่ยงเบนและหาได้อย่างง่ายดายตามวันที่จัดส่ง
แต่อย่าลืมว่า AI เป็นเครื่องมือเสริมที่ช่วยให้เราเข้าใจได้เร็วขึ้น ต้องซักถามและพิจารณาผลลัพธ์ด้วยตนเอง เพื่อเอาสิ่งที่ได้ไปประยุกต์ใช้และต่อยอดต่อได้อย่างเต็มประสิทธิภาพครับ
อย่าลืมปรับน้ำหนักของ Face ID สูงๆ ไว้ที่ 2.0 เลย จะทำให้ได้หน้าเหมือนขึ้นเยอะ แถมยังเปลี่ยนท่าทางได้ด้วย เหมือนว่ามันจะแยกวิเคราะห์เฉพาะส่วนหน้ามาแล้ว เอามาสร้างใหม่ให้
วิธีพื้นฐาน 4 : ใช้ IP Adapter FACE ID PORTRAIT
Face ID Portrait นี่โดดเด่นตรงที่มันปรับเปลี่ยนรูปไปตามคำบรรยายได้มากกว่าปกติ สามารถทำ Art Style ใส่หน้าที่ต้องการได้ตามใจชอบ โพสท่าก็เปลี่ยนได้หลายแบบขึ้น แต่ก็ควรเสริมน้ำหนักหน้าไว้ที่ 2.0 เหมือนเดิมนะ
ทำแนวการ์ตูน 3D ก็ได้ (ควรใช้ Checkpoint ที่ทำได้นะ)
นำความรู้มาประยุกต์สร้างภาพดั่งใจ
สรุป
วันนี้ผมพาเพื่อนๆ มาดูวิธีสารพัดในการสร้างภาพ AI ที่มีใบหน้าที่เราต้องการ ตั้งแต่วิธีง่ายๆ อย่าง Face Swap เปลี่ยนแค่หน้า ยันถึงวิธีขั้นเทพอย่าง Face ID กับ Instant ID ที่เปลี่ยนทั้งหน้าทั้งท่า แถมยังมีการนำหลายๆ วิธีมาประยุกต์ใช้ร่วมกันอีกด้วย ผมคิดว่าการใช้ Instant ID ร่วมกับ IP Adapter Plus Face แล้วใส่ style transfer เสริม เป็นวิธีที่ยืดหยุ่น และได้ผลออกมาดีที่สุดเลยนะ สนุกแน่นอน อย่าลืมเอาไปลองกันดูล่ะ!
ก่อนอื่น ในฐานะของ Excel User เราจะใช้ Power Query ดึง Data มานะครับ (ใช้ Python ก็ได้ แต่ผมจะใช้ Power Query เพราะถนัดมากกว่า)
ขั้นตอนแรกคือการดึงข้อมูลเข้า Power Query ก่อน ทำได้โดยใช้ Get Data from Web แล้วใส่ URL ข้างต้น จากนั้นโหลดมาแบบ Connection Only แล้วตั้งชื่อ Query ว่า “MedicalData”
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# Assuming 'medical_df' is already loaded with the data
# Step 1: Preprocess Data
# Convert categorical variables to numerical ones using one-hot encoding.
medical_df = pd.get_dummies(medical_df)
# Step 2: Feature Selection
# We will use all columns except 'charges' as features to predict 'charges'.
X = medical_df.drop('charges', axis=1) # Features
y = medical_df['charges'] # Target variable
# Step 3: Data Splitting
# Split the dataset into a training set and a testing set.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Step 4 & 5: Model Selection and Training
# Create a linear regression model and train it with the training data.
model = LinearRegression()
model.fit(X_train, y_train)
# Step 6: Model Evaluation
# Predict charges for the testing set and evaluate the model's performance.
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# The mean squared error and R-squared value give us an idea of the model's performance.
mse, r2
# Step 7: Prediction
# Use the trained model to predict charges based on a new set of features.
# Here's an example using the first row from the test set:
example = X_test.iloc[0]
predicted_charge = model.predict([example])
# The variable 'predicted_charge' now holds the predicted value for the charges.
predicted_charge
# Note: No print statements needed, as we assign the output to variables.
คราวนี้เราก็มาดู Step ถัดไปได้ละ ถ้าเราลองดูสูตรของค่า X กับ Y ที่มาจาก Step2 มันคือแค่การแยกว่า X คือตัวแปรต้น (Features) และ y คือตัวแปรตาม คือ Charges
ส่วนนี้ Code เดิม เค้าแค่กำหนดตัวแปร X กับ y ว่า X คือ Features ที่จะใช้ (ในที่นี้มันเอาทุกอันยกเว้น Charges เพราะมัน drop ทิ้งไป) และ y คือ target ที่เราต้องการ Predicts
# Step 2: Feature Selection
# We will use all columns except 'charges' as features to predict 'charges'.
X = medical_df.drop('charges', axis=1) # Features
y = medical_df['charges'] # Target variable
ซึ่งเอาเข้าใจเราต้องดูด้วยว่า features มัน Make sense ไหม แล้วซ้ำซ้อนไหม? เช่นพวก Transaction id, customer id อะไรแบบนี้ไม่ควรเอามาเป็น Feature นะ แต่ในเคสนี้เราไม่มี ก็เลยไม่เป็นไร
สูตรต่อไปเป็นการแยกข้อมูล Training Set กับ Test Set อันนี้มันกำหนด Test size = 0.2 ก็คือ 20% ซึ่งก็ดู ok ทำให้ X ก็เลยแยกเป็น 2 ชุด คือ X_train, X_test และ y ก็กลายเป็น y_train, y_test
# Step 3: Data Splitting
# Split the dataset into a training set and a testing set.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Step 4 & 5: Model Selection and Training
# Create a linear regression model and train it with the training data.
model = LinearRegression()
model.fit(X_train, y_train)
มันมองว่า ข้อมูลของเราเหมาะกับการทำ Linear Regression ก็เลยเลือก Model แบบนี้มาให้ ซึ่งพอถามไปปุ๊ปมันก็แนะนำว่า ควรจะ Visualize ข้อมูลดูก่อนว่ามีความเป็นเส้นตรงจริงไหม
ก็เลยจะลอง Plot แบบนี้ดู
Correlation Matrix
# Compute the correlation matrix
corr_matrix = medical_df.corr()
# Generate a heatmap
sns.heatmap(corr_matrix, annot=True, fmt=".2f")
พอกดให้เป็น Excel Value จะเป็นรูปเล็กๆ ใน Cell
พอเลือกที่ Cell ที่มีรูปจะมี Link ออกมาเป็นรูปใหญ่ให้ ขยายได้ตามใจชอบ ได้กราฟแบบนี้ (กด save as picture ได้)
Scatter Matrix
ถ้าทำ Scatter Matrix แบบนี้
# Generate a scatter matrix
pd.plotting.scatter_matrix(medical_df, figsize=(10, 10))
# Step 6: Model Evaluation
# Predict charges for the testing set and evaluate the model's performance.
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# The mean squared error and R-squared value give us an idea of the model's performance.
mse, r2
# Step 7: Prediction
# Use the trained model to predict charges based on a new set of features.
# Here's an example using the first row from the test set:
example = X_test.iloc[0]
predicted_charge = model.predict([example])
# The variable 'predicted_charge' now holds the predicted value for the charges.
predicted_charge
ซึ่งตรงนี้มันอาจขึ้นอยู่กับโชค ในการแบ่ง Training, Test Set ก็ได้
ทำ Cross Validation
ดังนั้นเราจะลองทำ Cross Validation เพื่อทดสอบ Training vs Test หลายๆ แบบ
from sklearn.model_selection import cross_val_score
# Using cross-validation to evaluate the model
cv_scores = cross_val_score(model, X, y, cv=10, scoring='r2')
cv_scores.mean()
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# Assuming 'medical_df' is already loaded with the data
# Step 1: Preprocess Data
# Convert categorical variables to numerical ones using one-hot encoding.
medical_df = pd.get_dummies(medical_df)
medical_df = medical_df.astype(int)
medical_df = medical_df.drop(['sex_female','smoker_no'],axis=1)
# Create interaction between 'age' and 'bmi'
medical_df['age_bmi_interaction'] = medical_df['age'] * medical_df['bmi']
# Create interaction between 'age' and 'sex_male'
medical_df['age_sex_interaction'] = medical_df['age'] * medical_df['sex_male']
# Create interaction between 'age' and 'smoker'
medical_df['age_smoker_interaction'] = medical_df['age'] * medical_df['smoker_yes']
# Create interaction between 'bmi' and 'sex_male'
medical_df['bmi_sex_interaction'] = medical_df['bmi'] * medical_df['sex_male']
# Create interaction between 'bmi' and 'smoker'
medical_df['bmi_smoker_interaction'] = medical_df['bmi'] * medical_df['smoker_yes']
# Create interaction between 'sex_male' and 'smoker'
medical_df['sex_smoker_interaction'] = medical_df['sex_male'] * medical_df['smoker_yes']
# Step 2: Feature Selection
# We will use all columns except 'charges' as features to predict 'charges'.
X = medical_df.drop('charges', axis=1) # Features
y = medical_df['charges'] # Target variable
# Step 3: Data Splitting
# Split the dataset into a training set and a testing set.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Step 4 & 5: Model Selection and Training
# Create a linear regression model and train it with the training data.
model = LinearRegression()
model.fit(X_train, y_train)
# Step 6: Model Evaluation
# Predict charges for the testing set and evaluate the model's performance.
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# The mean squared error and R-squared value give us an idea of the model's performance.
mse, r2
from sklearn.model_selection import cross_val_score
# Using cross-validation to evaluate the model
cv_scores = cross_val_score(model, X, y, cv=10, scoring='r2')
cv_scores.mean()
y_pred_full = model.predict(X)
# Actual vs Predicted scatter plot
plt.figure(figsize=(10, 6))
plt.scatter(y, y_pred_full, color='red', alpha=0.5) # 'y' should be your entire set of actual values
# Perfect prediction line
max_value = max(max(y), max(y_pred_full))
min_value = min(min(y), min(y_pred_full))
plt.plot([min_value, max_value], [min_value, max_value], color='green', linestyle='--', label='Perfect Fit')
plt.xlabel('Actual Charges')
plt.ylabel('Predicted Charges')
plt.title('Actual vs Predicted Charges for the Full Dataset')
plt.legend()
plt.show()
พิจารณาเพิ่มความซับซ้อนให้กับโมเดลให้มากขึ้น เช่น ใช้โมเดล Non-linear หรือเพิ่ม Interaction Term เพื่อจับความสัมพันธ์ที่ไม่ใช่เชิงเส้นตรงระหว่าง Features ต่างๆ
ที่สำคัญคือ นี่ไม่ใช่แค่การ Inpaint แบบที่เราคุ้นเคย แต่เป็นการกำหนดให้ IP Adapter มาจัดการเฉพาะจุด แล้วนำไป Generate ภาพใหม่ทั้งหมด และรูปผู้หญิงที่เรานำมาทำ Mask นั้นไม่ได้มีผลต่อผลลัพธ์เลย เพราะมันเป็นเพียงแค่ช่วยให้การกำหนดขอบเขตการทำงานของ IP Adapter ง่ายขึ้นเท่านั้นเอง
ที่เจ๋งไปกว่าการกำหนดพื้นที่ให้กับ IP Adapter แค่ตัวเดียวแบบตัวอย่างข้างบน จริงๆ แล้วเราสามารถใช้ IP Adapter หลายๆ ตัว แยกทำงานกันบนคนละส่วนของรูปที่กำลังจะ Gen ได้ด้วยนั่นเอง
(full body shot:1.15) (direct front view:1.15), (arm at side:1.15), beautiful young asian half thai korean woman, 22 yrs old, modern face, white background
เนี่ยจะเห็นว่าลายช้างมันไม่มา เพราะลวดลายมันเป็นเรื่องละเอียดเกินไป ใช้ท่าปกติไม่ไหว (ถ้าเราลอง weight กางเกงเพิ่มเข้าไป ก็พบว่าไม่ work อยู่ดี)
ซึ่งเดี๋ยวผมจะลอง prompt เพิ่มเข้าไป ว่า black shorts with white elephant pattern
(full body shot:1.15) (direct front view:1.15), (arm at side:1.15), beautiful young asian half thai korean woman, 22 yrs old, modern face, black shorts with white elephant pattern, white background
เราสามารถเอารูป Texture ลวดลายทีเรามี (จะ Gen เอาก็ได้ อันนี้ผม Gen เอา) มาสั่งให้ AI สร้างชุดตามนั้นได้ด้วย แต่อาจต้องปรับ Prompt หน่อย ไม่งั้นมันไม่เข้าใจ
(full body shot:1.15) (direct front view:1.15), (arm at side:1.15), beautiful young asian half thai korean woman, 22 yrs old, modern face, white background, colorful mini skirt dress
และถ้าเรานำ IP Adapter มาใช้กับใบหน้าและ Face ID ล่ะก็ นั่นจะเป็นอีกขั้นของการสร้างภาพที่น่าตื่นตาตื่นใจ เพราะเราจะสามารถสร้าง AI Influencer ที่มีใบหน้าเป็นเอกลักษณ์เฉพาะตัว และแสดงอารมณ์ความรู้สึกได้อย่างสมจริง ซึ่งจะนำไปสู่การสร้างคาแรคเตอร์ที่มีชีวิตชีวา น่าติดตาม และสื่อสารกับผู้ชมได้ในระดับที่ลึกซึ้งยิ่งขึ้น
ถ้าเราปรับ Prompt ให้เหมาะกับ Model มากขึ้น เช่น ใส่พวก Film Grain เข้าไป
beautiful young asian half thai korean idol woman, 20 yrs old, modern face, loose tank top, in coffee shop, (film grain texture:1.2),(analog photography aesthetic:1.15),visual storytelling,dynamic composition
LoRA (Low-Rank Adaptation) คือ AI model ขนาดเล็กที่ใช้เสริมเข้าไปใน model หลักเพื่อให้สร้างภาพในลักษณะเฉพาะที่ต้องการได้ เช่น สร้างภาพตัวละครที่มีลักษณะเสื้อผ้าหรือท่าทางแบบใหม่ๆ ที่ model หลักไม่เคยถูก train มาก่อน ทำให้ขยายความสามารถของ model หลักได้มากขึ้น
masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
portrait shot, masterpiece, best quality, absurdres, 1girl, asian japanese chinese idol 20 yrs old, white purple hair, (FrierenBase:1.25), long hair, (twintails:1.2), earrings,( white capelet, striped shirt:1.15), horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, outdoors, forest
คือไม่มีความเป็น Frieren เลย เพราะ Model หลักของเรามันยังไม่รู้จัก Frieren นั่นเอง
masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
เมื่อเราโหลด LoRA ที่ต้องการมาแล้ว ขั้นตอนต่อไปคือต้องบอกให้ AI model รู้จักและเรียกใช้ LoRA นั้น ยกตัวอย่างเช่น หากเราต้องการใช้ LoRA ของตัวละคร Frieren ให้ทำตามขั้นตอนดังนี้
เริ่มจากการโหลด base model หลักที่ต้องการก่อน ด้วย Node “Load Checkpoint”
masterpiece, best quality, absurdres, 1girl, solo, FrierenBase, long hair, twintails, earrings, white capelet, striped shirt, horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, arms behind back, outdoors, forest
portrait shot, masterpiece, best quality, absurdres, 1girl, asian japanese chinese idol 20 yrs old, white purple hair, elf ear,(FrierenBase:1.25), long hair, (twintails:1.2), earrings,( white capelet, striped shirt:1.15), horizontal stripes, long sleeves, belt, white skirt, gold-trim, black pantyhose, outdoors, forest
ผลลัพธ์ก็ออกมาดีขึ้นพอสมควร
ถ้าอยากให้สวยกว่านี้
ต้องใช้ Model หลักที่เหมาะสม
เนื่องจาก LoRA ที่เราใช้เป็น LoRA แบบอนิเมะ เดี๋ยวเราจะลองเปลี่ยนไปใช้ Model อนิเมะไปเลย หรือ Model พวก Semi Realistic ก็จะได้ผลลัพธ์ดีขึ้นกว่าเดิมมาก
LoRA เป็นตัวช่วยเสริมที่ทรงพลังให้กับ AI model ทำให้สร้างภาพในแบบที่หลากหลายและตรงใจผู้ใช้มากขึ้น แถมยังปรับใช้ได้ง่าย ลองนำไปใช้กับงานของคุณดูนะครับ รับรองว่าสนุกและได้ภาพสวยๆ แน่นอน
realistic photo of beautiful village in the winter
ลองควบคุมด้วย Line Art
ControlNet Line Art เป็นอีกหนึ่ง Model ของ ControlNet ที่ใช้ควบคุมโครงร่างหรือลายเส้นของวัตถุในภาพที่สร้างจาก Stable Diffusion ให้เป็นไปตามเส้นร่างที่เรากำหนด
เมื่อเรานำภาพ Line Art ไปใช้เป็น Condition ให้กับ ControlNet แล้ว มันจะช่วยควบคุมให้ Stable Diffusion สร้างภาพที่มีโครงร่างตรงตามลายเส้นนั้นๆ ได้
realistic close up photoshot of beautiful (mix european korean chinese thai ) woman 20 yrs old, looking at viewer, wet twin_braids, smile ,(hand waving bye bye:1.15), beautiful eyes, wearing (wet white tank top:1.2), wet, in summer songkran festival, (sexy medium breast:1.2)
ealistic photo of beautiful thai girl , modern face, net idol , 25 yrs old, looking_at_viewer, wearing long colorful dress sitting in front of winter village
การทำงานกับ Node ต่างๆ ใน ComfyUI เพื่อสั่งงาน AI ได้อย่างครบวงจร
พร้อมด้วยความรู้เพิ่มเติมอีกเพียบที่รอให้คุณค้นพบ
ไม่ว่าคุณจะเป็นมือใหม่ที่กำลังเริ่มศึกษา AI Art หรือเป็นผู้เชี่ยวชาญที่ต้องการเพิ่มพูนทักษะ บทความนี้จะช่วยให้คุณสามารถใช้ Stable Diffusion เพื่อสร้างผลงานอันน่าทึ่งได้อย่างเต็มประสิทธิภาพแน่นอน
เคยสงสัยไหมว่าถ้าเราสั่งให้วาดรูปแมวใน Text Prompt แล้ว AI มันวาดออกมาเป็นรูปร่างแมวถูกต้องได้ยังไง? มันต้องมีส่วนที่เคยเรียนรู้เรื่องการวาดแมวมาก่อน จริงมะ? นั่นก็คือตัว Checkpoint Model นั่นเอง
Model (Unet) : เป็นตัว Model ที่เรียนรู้การลด Noise ให้กลายเป็นรูป (Concept เวลาอธิบายการทำงานละเอียด จะวาด Diagram รูปร่างคล้ายตัว U เลยเรียกกันว่า Unet) ทำหน้าที่เหมือนตัวศิลปินที่มีทักษะวาดรูป AI ซึ่งการที่มันจะรู้ว่าจะสร้างรูปแมวยังไง รูปคนยังไง อยู่ที่ตัวนี้เลย
CLIP : เป็นตัวที่สามารถแปลงข้อความ Text Prompt ที่เราระบุให้เป็น Token แล้วค่อยแปลงเป็นตัวเลขที่ AI เข้าใจ เรียกว่า Text Embedding
VAE : (ย่อมาจาก Variational Auto Encoder) เป็นตัวแปลงข้อมูลรูป ระหว่าง Pixel Space (รูปในโลกจริง) กับ Latent Space (รูปในโลกของ AI) ซึ่งเป็นพื้นที่ที่ข้อมูลถูกบีบอัดให้เล็กลงจน AI ทำงานสะดวก
Nerd Stuff: CLIP และ VAE จะเปลี่ยน ข้อมูลดิบ (เช่น Text หรือ รูป) ให้อยู่ในมิติที่ต่ำลงไว้ใน Latent Space ทำให้รูปมีขนาดเล็กลงมาก (ด้านละ 8 เท่า = กว้าง x ยาว = 8×8 = 64 เท่า) ซึ่งจะสะดวกต่อการประมวลผลของโมเดล AI มาก
ComfyUI เป็นเครื่องมือทำภาพ AI ผ่าน Stable Diffusion ที่มุ่งเน้นความยืดหยุ่นในการปรับแต่ง Workflow แบบ Node-based คล้ายกับโปรแกรมอย่าง Blender หรือ Unreal Engine ซึ่งเหมาะอย่างยิ่งสำหรับงานที่ต้องการความซับซ้อนและการทำซ้ำอย่างเป็นระบบ เช่น การผลิตภาพ AI สต็อกจำนวนมาก
Krita AIเป็นเหมือนโปรแกรม Photoshop ที่ผนวกเอา AI เข้าไว้ด้วยกัน เน้นการวาดและปรับแต่งแยกเป็น Layer ได้ จึงเหมาะสำหรับการสร้างสรรค์ผลงานที่ต้องการความสมบูรณ์แบบในภาพเดียว ซึ่งเบื้องหลังนั้น Krita AI ก็ใช้ ComfyUI ในการประมวลผล AI เช่นกัน แต่จำกัดการใช้งานผ่านโปรแกรม Krita เท่านั้น
สุดท้ายนี้ ไม่ว่าจะเลือกใช้เครื่องมือใด สิ่งสำคัญคือการทำความเข้าใจและเรียนรู้การใช้งานอย่างถ่องแท้ เพื่อปลดปล่อยศักยภาพสูงสุดในการสร้างสรรค์ผลงาน AI Art ที่น่าทึ่งตามจินตนาการของเราเอง
มาร่วมเดินทางไปในโลกของ AI Art ด้วยกันนะครับ ผมเชื่อว่า Series นี้จะช่วยให้ทุกท่านได้ค้นพบศักยภาพใหม่ๆ และสร้างผลงานที่น่าทึ่งตามจินตนาการของคุณเอง
ในโลกยุคปัจจุบัน เทคโนโลยี AI ได้สร้างการเปลี่ยนแปลงครั้งใหญ่ ทำให้ทุกคนสามารถสร้างสรรค์ผลงานอันน่าทึ่งได้ง่ายขึ้น วันนี้ผมมีเครื่องมือดีๆ มาแนะนำ นั่นก็คือเครื่องมือชื่อว่า Krita โปรแกรมวาดภาพฟรีที่ล้ำสมัย ใช้งานคล้าย Photoshop พร้อมด้วย Plugin AI Diffusion ตัวช่วยเสริมพลังให้ทุกการวาดภาพ
ไม่ว่าคุณจะมีพื้นฐานการวาดภาพมากน้อยแค่ไหน AI Diffusion จะช่วยให้ภาพของคุณสมบูรณ์แบบยิ่งขึ้น แค่วาดร่างภาพง่ายๆ ด้วยปลายนิ้ว AI จะใส่รายละเอียดสุดล้ำลึกให้ภาพของคุณสวยสมจริงอย่างน่าทึ่ง โดยไม่จำเป็นต้องอาศัยทักษะระดับมืออาชีพ แต่ถ้าคุณวาดภาพเก่งอยู่แล้ว Krita AI จะยิ่งทำให้ภาพของคุณเจ๋งขึ้นไปอีก เรียกว่า AI มันคือ ตัวคูณให้ฝีมือคุณ เลยล่ะ
และเพื่อเพิ่มความสะดวกในการวาดภาพ การใช้ iPad ร่วมกับ Apple Pencil จะทำให้ทุกอย่างง่ายขึ้นไปอีก เพียงเชื่อมต่อ iPad เข้ากับ Krita บนคอมพิวเตอร์ผ่าน App ชื่อ Easy Canvas (อันนี้เสียตัง) คุณก็พร้อมปลดปล่อยจินตนาการได้แล้ว ด้วยความรู้สึกเหมือนได้วาดบนกระดาษจริงๆ
(ป.ล. ถ้าใช้ Model แบบ SDXL ก็อาจจะ Gen ที่ 1024×1024 หรือ 832×1216 หรือ 896×1152 ไรงี้ได้เลย)
ก่อนอื่นลองทดสอบก่อนว่าเรา Gen AI ได้รึยัง
สมมติ ให้ลองพิมพ์ Prompt ง่ายๆ เช่น
beautiful asian woman wearing white shirt
ใน docker ที่ชื่อว่า AI Image Generation แล้วกด Generate
จากนั้น AI มันจะ Gen รูปออกมาตามที่เราสั่ง ซึ่งแต่ละคนจะได้รูปที่ไม่เหมือนกัน ขึ้นอยู่กับการตั้งค่าต่างๆ รวมถึงการ Random Seed (ค่าที่กำหนดรูปแบบ Random)
ซึ่งถ้าเราทดลองใช้ Apple Pencil ดูใน Krita เบื้องต้นมันจะกำหนดน้ำหนักและขนาดเส้นด้วยแรงกดไม่ได้ เราต้องไปตั้งค่าพิเศษก่อนนะ
Step 7 : กำหนดให้ Krita รองรับการใช้งาน Apple Pencil พร้อมระบบตรวจจับแรงกด
วิธีกำหนดให้ไปตั้งค่าใน Krita คือไปที่ Settings -> Configure Krita -> Tablet Setting แล้วเลือกเป็น Windows 8 + Pointer Input (Windows Ink) จากนั้นกด Ok แล้วต้องปิดเปิด Krita ใหม่ด้วย
ต่อไปเป็นการเรียกใช้เครื่องมือกำหนด Pen Pressure ใน Krita คือให้ไปที่ Setting -> Configure Toolbars-> หาคำว่า press แล้วเอา Use Pen Pressure ไปใส่เมนูขวา
ในความเห็นของผม ศิลปะไม่ได้จำเป็นต้องใช้การวาดเท่านั้น แต่เราจะใช้วิธีไหนก็ได้ในการถ่ายทอดความคิด ความรู้สึก จินตนาการของออกมา ดังนั้นการได้ลองใช้ AI สร้างภาพในแบบที่คุณอยากเห็น มันจะทำให้คุณเข้าใจและเห็นคุณค่าของความคิดสร้างสรรค์ในตัวเองมากขึ้นไปด้วย ซึ่งนี่แหละคือศิลปะแขนงใหม่ที่เรียกว่า AI Art
หากพร้อมแล้ว ก็ไปเริ่มสร้างผลงานสุดสร้างสรรค์ของคุณได้เลย ด้วยโปรแกรม Krita บน iPad ร่วมกับ Apple Pencil และพลังของ AI ที่จะช่วยผลักดันขีดจำกัดแห่งจินตนาการให้ไกลกว่าที่เคย ลุยกันเลยครับ!
มีรูปประกอบที่จะทำให้คนอ่านเข้าใจทั้งโจทย์ปัญหา และคำตอบที่อยากได้ด้วย รูปควรเห็นชื่อคอลัมน์และเลขแถวชัดเจน (ถ้าเป็น Data Model, Query ก็ควรจะเห็นรายละเอียดอื่นๆ ด้วยเช่น ภาพ Data Model, M Code โดยรวม)
หลังจากที่ผมแชร์เรื่อง Second brain ยุค AI และยกตัวอย่าง AI ส่วนตัวที่ช่วยเหลือเรื่อง Thinking Framework รวมถึงคอยตรวจจับตรรกะวิบัติ ก็มีคนสนใจถามวิธีสร้าง GPTs ส่วนตัวกันเพียบ
นี่คือตัวอย่าง AI ส่วนตัว ที่ทำไว้ (ตามไอเดียที่ปิ๊งจาก Second Brain AI)
สมมติอยากได้ AI ที่ “จะคอยเถียงกับเราแบบมีเหตุผล” เพราะปกติ AI Chatbot มักจะคล้อยตามคนถาม เลยอยากได้ตัวที่ไม่คล้อยตาม แต่จะหาเหตุผลมาสู้กับเรา ถ้ามี AI แบบนี้น่าจะฟินสุดๆ จริงมะ 555
วิธีทำง่ายๆ ก็แค่พิมพ์เป็นภาษาไทยไปเลยว่าอยากได้ AI แบบไหน เช่น
อยากได้ AI ที่คอยเถียงกับเรา เถียงด้วยเหตุผล เพราะปกติแล้ว AI Chatbot โดยทั่วไปจะชอบมีนิสัยคล้อยตามคนถาม ก็เลยอยากได้ AI ที่จะไม่คล้อยตาม แต่จะหาเหตุผลที่ต่างจากเรามาสู้ด้วย
แล้วมันจะถามเรื่องรูป Profile ของ AI ถ้าไม่ชอบก็บอกให้มันแก้ได้ จะแก้กี่รอบจนกว่าจะพอใจก็ได้ หรือจะอัปโหลดเองก็สบายมาก
Personalization: The GPT should maintain an engaging and somewhat assertive personality, embodying the role of a knowledgeable debater without becoming confrontational or dismissive.
เราก็แก้เป็นอีกแบบได้ ซึ่งถ้าไม่ถนัดภาษาอังกฤษ ก็ให้ไปพิมพ์ไทยก่อน แล้วแปลเป็น Eng แล้วเอากลับมาใส่ในนี้ก็ได้ เช่น สิ่งที่ต้องการคือ
Personality and response style: I'd like you to reply in a casual language, similar to texting language used in social media chats, like how friends argue with each other. Argue with good intentions, but it's okay to use a bit of slang, Use language like a teenager, and likes to use emojis too
**Knowledge and Technique from Upload Docs** : describe Knowledge and Technique from Upload Docs you use in the argument with Reference in doc in original language and must specify source page number
เห็นมั้ยล่ะครับว่า Second Brain ยุค AI นี่มันง่าย สะดวก และเจ๋งขนาดไหน แค่ลองเปิดใจนำไปใช้ ยิ่งใช้บ่อยเท่าไหร่ ก็จะยิ่งค้นพบศักยภาพในการคิดสร้างสรรค์ของตัวเองได้มากขึ้นเท่านั้น โดยมี AI คอยเป็นผู้ช่วยคนสำคัญ ที่จะทำให้เราก้าวไปสู่อีกระดับในเส้นทางชีวิตได้แน่นอน
ผมเชื่อว่าในอนาคตอันใกล้ คนเราจะต้องเรียนรู้ที่จะอยู่และทำงานร่วมกับ AI ให้เป็น เพราะ AI จะเข้ามามีบทบาทสำคัญในชีวิตประจำวันของเรา ไม่ต่างจากอินเทอร์เน็ตที่เราคุ้นเคยกันดีทุกวันนี้ การ “ทำงานร่วมกับ AI” และรู้จักใช้มันให้เป็น จึงเป็นอีกหนึ่งทักษะจำเป็นในยุคนี้เลยล่ะครับ
ดังนั้นพยายามหัดใช้ AI ให้คุ้นเคยเอาไว้ครับ ใช้มันสรุปความคิดง่ายๆ แบบนี้ให้ได้ก่อน เดี๋ยวก็จะเข้าใจมันมากขึ้น จนสั่งงานที่ยากขั้นในชีวิตจริงได้เองครับ
ปัญหาหนักอกของคนที่ใช้ Power BI มาถึงระดับนึงก็คือการเขียน DAX ทั้งนี้เป็นเพราะว่าการเขียน DAX จะต้องคำนึงถึง Data Model และ บริบทต่างๆ ทั้ง Filter Context และ Row Context เป็นอย่างดี จึงจะเขียนได้ถูกต้อง (แค่อ่านเจอ 2 คำนี้หลายคนก็งงแล้ว)
แต่ปัญหาเรื่อง DAX ยากๆ นี้จะลดไปได้มากเลยด้วยการมาถึงของ Visual Calculation ซึ่งเป็น Preview Features ที่เพิ่งเข้ามาใน Power BI ในเดือน Feb 2024 นี้เอง (ณ ขณะที่ผมเขียนบทความนี้เลย)
Visual Calculations คืออะไร?
มันคือการที่ให้เราสามารถ เขียนสูตรเพื่อสร้าง Value ขึ้นมาใหม่ในกราฟโดยตรง โดยที่สามารถอ้างอิงค่าอื่นๆ ในกราฟที่เรากำลังทำงานได้อย่างง่ายดายและสะดวกขึ้นมาก
การเปิดใช้งาน
ณ ปัจจุบันมันเป็น Preview Features อยู่ จะต้องไปเปิดใน File->Option & Settings -> Options -> Preview Features -> Visual Calculations ซะก่อน
ซึ่งสังเกตว่า เวลาที่เราเขียนสูตรใน Visual Calculations มันจะมองเห็นแค่ Field ที่อยู่ใน Visual นั้นๆ เท่านั้นนะ (ไม่ได้มองเห็นใน Data Model เหมือนปกติ)
ซึ่งตรงนี้อาจมองง่ายๆ ว่าเหมือนมีตารางของ Visual นี้ทดขึ้นมา แล้วเราก็ทำงานกับ Data ในตารางตรงนี้ได้เลยโดยตรง ไม่ต้องสนใจ Data Model แล้ว
เช่น ผมจะเลือก Field เป็น Red Qty ที่เป็น Value ดั้งเดิมที่เราใส่เข้าไปใน Visual นี้แต่แรก
Running sum = RUNNINGSUM([Red Qty])
มันก็จะคำนวณยอดสะสมให้เลยแบบชิลๆ
เราใช้ DAX ปกติใน Visual Cal ก็ได้
หรือ เราจะเพิ่ม Field ใหม่ แบบไม่ใช้ Template ก็ได้นะ เราอาจใช้ DAX ปกติเลยก็ได้ เช่น ผมจะเอาอักขระ 3 ตัวแรกของ Customer Type ก็ทำได้
CustShort = LEFT([Customer Type],3)
หรือจะอ้างค่ามาใช้ใน Visual Calculations Field ใหม่อีกก็ได้ เช่น
ใช้ IF ก็ทำได้ตามปกติเลย เช่น ถ้าเช็คแล้ว 3 ตัวแรกเป็น Com ให้แสดงว่า “ความลับ” นอกนั้นแสดงว่า [Red Qty]
ถ้าลบ Red Qty จะทำให้ทั้ง CustShort และ CustIF พัง
ถ้าจะซ่อน ให้กดรูปลูกตา ซึ่งจะทำให้มองไม่เห็น Field นั้นใน Visual จริงๆ ซึ่งเราสามารถซ่อนได้เสมอ ไม่ต้องกังวลอะไรมากมายเท่ากับการลบทิ้งครับ แปลว่าเราสร้าง Field ทดได้นะ
กลับมาดูรายละเอียดของ Template
อย่างไรก็ตาม การ Running ของมันก็จะไล่ตามลำดับของ Item ใน Visual นั้นๆ ซึ่งอาจดูไม่ Make Sense เท่าไหร่ ถ้าเราเอา Person 2021 ไปอยู่ต่อจาก Company 2023
ดังนั้นถ้าเราลองสลับลำดับ Field ใหม่ดู ก็จะพบว่าแบบนี้ดู Make Sense กว่า จริงมั้ย?
ถ้าเราเปลี่ยน Field Customer Type เป็น Month Name น่าจะเหมาะกับการคำนวณค่าสะสมมากกว่า
Google Sheets สามารถเชื่อมต่อโดยตรงกับ Google Forms เพื่อรวบรวมข้อมูลและวิเคราะห์ได้ทันทีได้อย่างง่ายดายโดยอัตโนมัติเลย
แล้วใน Excel ทำยังไง?
เราสามารถใช้ Power Query ดึงข้อมูลจาก Google Sheets ที่เชื่อมกับ Google Form ได้ง่ายๆ เลย โดยผ่านการ Get Data form Web (ถ้าใช้การ Publish google sheets นะ) แต่ถ้าหากใช้ Microsoft Forms ในการรวบรวมข้อมูล จะดึงยากกว่าพอสมควรซะงั้น! (อาจเพราะมีประเด็นเรื่องความปลอดภัย มันเลยต้องมีการเช็คสิทธิ์การเข้าถึง)
ใช้ VBA (Visual Basic for Applications) เพื่อเขียนฟังก์ชันที่ใช้งาน Regex ได้
8. การใช้ Add-ons และ Google Apps Script
การใช้ Add-ons และ Google Apps Script ใน Google Sheets นั้นเปิดโอกาสให้ผู้ใช้สามารถขยายฟังก์ชันและความสามารถของ Google Sheets ได้อย่างมากมาย
Add-ons
Add-ons คือแอปพลิเคชันเสริมที่สามารถติดตั้งเพื่อเพิ่มฟังก์ชันหรือความสามารถใหม่ๆ ให้กับ Google Sheets ผู้ใช้สามารถค้นหาและติดตั้ง Add-ons จาก Google Workspace Marketplace ซึ่งมีทั้งที่พัฒนาโดย Google และโดยผู้พัฒนาอื่นๆ
Google Apps Script
Google Apps Script คือเครื่องมือที่ช่วยให้คุณสามารถเขียนสคริปต์ (เขียนโปรแกรม) โดยใช้ JavaScript เพื่อเข้าถึงและเปลี่ยนแปลงข้อมูลใน Google Sheets, Gmail, Google Drive และแอปพลิเคชัน Google อื่นๆ โดยสคริปต์เหล่านี้สามารถช่วยให้คุณสร้างฟังก์ชันใหม่ๆ, สร้างเมนูที่กำหนดเอง, และแม้กระทั่งสร้าง Add-ons ของคุณเองได้
การใช้งาน Google Apps Script และ Add-ons จะทำให้คุณสามารถปรับแต่ง Google Sheets ได้มากกว่าการใช้ฟังก์ชันและสูตรมาตรฐานที่มีอยู่ ซึ่งช่วยให้คุณสามารถสร้างเครื่องมือที่มีประสิทธิภาพและเฉพาะเจาะจงตามความต้องการของธุรกิจหรือโปรเจคของคุณได้
นอกจากนี้ก็อาจจะใช้ API ใน VBA, Office Script หรือ Add In เช่น ใช้ Open AI ChatGPT API มาช่วยผ่าน LABS.GENERATIVEAI ก็อาจจะได้คำตอบที่อาจจะดีกว่า แต่มันมีค่าใช้จ่ายตามจำนวนการใช้ API ครับ
ปี 2024 คือปีของ AI อย่างแท้จริง ซึ่งตอนนี้คนทั่วไปสามารถเข้าถึง AI ที่มีความสามารถสูงได้แล้ว ซึ่งมีทั้งแพลตฟอร์มที่เสนอให้บริการฟรีและบริการที่มีค่าใช้จ่าย
หากเรามองหา AI ที่มีความสามารถสูงสุด ก็อาจต้องพึ่งพาบริการที่มีค่าใช้จ่าย แล้วตัวไหนมันเก่งกว่ากันล่ะ?
ความจริงคือ AI แต่ละตัวมีจุดเด่นที่แตกต่างกัน เช่น บางตัวมีความสามารถในการวิเคราะห์และเหตุผลได้ดี บางตัวก็อาจเก่งด้านการสร้างสรรค์มากกว่า รวมถึงความเร็วในการทำงานที่แตกต่างกัน
ผมในฐานะของคนสอน Excel ก็จะขอทดสอบ AI ในแง่ของการแก้ปัญหา Excel โดยจะทำการทดสอบแข่งกันระหว่าง ChatGPT4 ของ Open AI กับ Gemini Advanced ของ Google มาเปรียบเทียบกัน เนื่องจากทั้งสองตัวนี้ถือเป็น AI Chatbot ที่เจ๋งที่สุดในโลกในเวลานี้
ถ้ามีข้อมูลนี้ใน Excel ช่วยคิดสูตรที่จะทำให้ได้ผลลัพธ์ที่ต้องการที
ต้นฉบับ
=========
original data
=========
Mr. Sira Ekabut
Mr. Itadori Yuji
Miss Nezuko Kamado
ผลลัพธ์ที่ต้องการ
=====
Sira
Itadori
Nezuko
AI จะเก่งขึ้นเรื่อยๆ แน่นอน แต่ที่สำคัญ อย่าลืม Cross Check คำตอบจาก AI ทุกครั้งเสมอนะ
เทพเอ็กเซล
แต่ทั้งหมดทั้งมวลคือ AI จะเก่งขึ้นเรื่อยๆ แน่นอน ปัจจุบันเราสามารถให้ Custom Knowledge มันได้แล้วและในอนาคตมันอาจจะตอบได้ดีกว่านี้อีก แต่ที่สำคัญ อย่าลืม Cross Check คำตอบจาก AI ทุกครั้งเสมอนะ ^^
แถม : ให้ AI แนะนำฟังก์ชันที่มีประโยชน์
สุดท้ายนี้ เราสามารถใช้ AI ในการแนะนำและช่วยเราเรียนรู้เรื่องต่างๆ ที่เราสนใจได้ และแม้ว่าเราไม่รู้ว่าต้องเริ่มต้นยังไง ก็ให้ AI แนะนำตัวที่ประโยชน์ให้เราได้นะ
ผิดกับ Power Pivot ซึ่งเหมือนกับ “เชฟมือทอง” ที่สามารถนำวัตถุดิบที่ Power Query เตรียมมาให้ มาปรุงแต่งให้เป็นอาหารชั้นเลิศ และเปิดโอกาสให้ผู้ใช้สามารถสร้างรายงานและวิเคราะห์ข้อมูลแบบซับซ้อนมากขึ้นได้โดยทลายขีดจำกัดเดิมๆ ของ PivotTable ออกไปอย่างสิ้นเชิงโดยใช้ความสามารถหลัก 2 อย่างนี้
Data Model เพิ่มความสามารถในการสรุปข้อมูลจากหลายตารางที่มีความสัมพันธ์กันด้วย PivotTableได้ แปลว่าเราไม่ต้องใช้ VLOOKUP ดึงทุกอย่างมารวมในตารางเดียวกันอีกต่อไปและไม่ต้องกังวลเกี่ยวกับข้อจำกัดของข้อมูลที่ Pivot Table แบบดั้งเดิมมีอยู่
การเปลี่ยนแปลงที่พูดถึงไปข้างต้นนี้ ทำให้การทำงานกับข้อมูลใน Excel ไม่เหมือนเดิมอีกต่อไป แต่ยังไม่จบแค่นั้น เพราะมันยังมีการมาถึงของเครื่องมืออื่นๆ เช่น Power BI ที่เกิดมาเพื่อการทำ Dashboard โดยเฉพาะ และมีความสามารถของ Power Query และ Data Model เช่นกัน
ความสามารถของ Power BI ในการแสดงผลข้อมูลที่ไม่เพียงแต่สวยงามและง่ายต่อการเข้าใจ แต่ยังมีความสามารถในการทำให้ผู้ใช้สามารถโต้ตอบกับข้อมูลได้โดยตรง ทำให้มันเหนือกว่า Excel ในหลายๆ ด้าน
นอกจากนี้ Power BI ยังมีความโดดเด่นในการแชร์ข้อมูลแบบออนไลน์ ทำให้ผู้ใช้สามารถเข้าถึงข้อมูลและรายงานได้จากทุกที่ทั่วโลกผ่านคอมพิวเตอร์, มือถือ, หรือแท็บเล็ต และยังรักษาความปลอดภัยของข้อมูลได้อย่างดีเยี่ยม แม้ว่าการแชร์รายงานจะต้องใช้ User License ที่มีการสมัครแบบเสียตังค์ก็ตาม
ยังไงก็ตาม Power BI ไม่ได้จะมาแทนที่ Excel ในทุกๆ ด้าน เพราะแต่ละเครื่องมือมีจุดเด่นที่เหมาะสมในการใช้งานที่ต่างกัน เพราะ Excel ยังคงมีความเหมาะสมในการทำงานเอกสารทั่วไป, การคำนวณทางการเงิน, และการสร้าง Financial Model หรือในกรณีที่ต้องการผลลัพธ์เป็นตารางข้อมูล Excel ยังคงเป็นเครื่องมือที่เหมาะสมกว่า Power BI
สรุปได้ว่า Power BI และ Excel เป็นเครื่องมือที่เสริมกันและกัน โดย Power BI นำเสนอความสามารถในการวิเคราะห์ข้อมูลและสร้าง Dashboard ที่มีปฏิสัมพันธ์ได้อย่างเหนือชั้น ในขณะที่ Excel ยังคงเป็นเครื่องมือที่ไม่อาจหาทดแทนได้สำหรับการคำนวณทางการเงินและการจัดการข้อมูลที่มีความซับซ้อนในรูปแบบตารางข้อมูล
การเริ่มต้นเรียนรู้สิ่งใหม่ๆ อย่าง Power Query, Power Pivot, Dynamic Array, Power BI หรือแม้แต่ Python อาจดูเหมือนเรื่องที่ดูน่ากลัวเอามากๆ เพราะมันมีเนื้อหาเยอะเหลือเกิน แต่คุณไม่จำเป็นต้องเรียนทุกสิ่งทุกอย่างพร้อมกัน แค่ลองนำมาใช้ซักตัวนึง ซึ่งผมแนะนำให้เริ่มที่ Power Query ก่อน คุณจะพบว่า ความรู้พวกนี้จะเปลี่ยนวิธีการการทำงานของคุณไปตลอดกาล มันจะทำให้คุณทำงานเสร็จเร็วขึ้น จนมีเวลาไปฝึกฝนอย่างอื่นต่อได้เอง
นอกจากนี้ ในยุคที่มีการปรากฏตัวของ AI เจ๋งๆ มากมาย เช่น ChatGPT ของ Open AI, Gemini ของ Google รวมถึง Copilot ของ Microsoft ทำให้การหาความรู้และการทำงานของมนุษย์เราจะเปลี่ยนแปลงไปอย่างมหาศาล
ซึ่งในยุคสมัยของ AI นั้น หน้าที่ของพวกเราอาจจะเปลี่ยนไปเล็กน้อย นั่นคือ
อย่างไรก็ถาม AI เหล่านี้ก็มีโอกาสที่จะให้คำตอบที่ผิดพลาดหรือยังทำงานที่ซับซ้อนมากไม่ได้ (ปัจจุบัน Copilot ใน Excel ยังง่อยอยู่) ดังนั้นสิ่งสำคัญที่เราจะต้องมีความความรู้ที่จะสั่งงาน AI ได้ รวมถึงสามารถบอกได้ว่าสิ่งที่ AI ทำมาให้เรานั้นมันถูกหรือผิด?
ในที่สุด หากคุณต้องการปรับปรุงหรือเพิ่มพูนทักษะการใช้งาน Excel ในยุคใหม่นี้ เทพเอ็กเซลมีคอร์สอบรมที่จะช่วยให้คุณสามารถจับจุดและใช้ประโยชน์จากเทคโนโลยีใหม่ๆ ใน Excel ได้อย่างเต็มที่ ไม่ว่าจะเป็น Power Query, Power Pivot, Array Formula, Power BI, หรือการทำงานร่วมกับ AI และ Copilot AI คอร์สเหล่านี้จะเตรียมคุณให้พร้อมสำหรับอนาคตของการวิเคราะห์ข้อมูลและการทำงานแบบอัตโนมัติในโลกของ Excel
DAX ภาษาของ Data Model ใน PowerPivot (ตัวเดียวกับ Power BI)
M ภาษาของ Power Query เอาไว้ใช้จัดการเตรียมข้อมูลให้เรียบร้อย ซึ่งสามารถใช้ เครื่องมือสำเร็จรูปใน Power Query Editor ช่วยสร้าง Code ได้เช่นกัน (ตัวเดียวกับ Power BI)
หลายๆ คนน่าจะได้ลองใช้ Power Query ผ่านเครื่องมือบน User Interface ปกติไปจนเป็นแล้ว และหลายคนก็จะเริ่มรู้แล้วว่าเครื่องมือ User Interface ปกตินั้นมันไม่สามารถตอบโจทย์ในงานบางอย่างได้ เรียกได้ว่าเครื่องมือ Power Query ปกตินั้นสามารถตอบโจทย์งานทั่วไป 80% ได้แหละ แต่งานอีก 20% จะต้องมีการยุ่งกับ M Code ถึงจะสามารถทำได้สำเร็จ
แต่ในบทความนี้ผมจะเน้นไปที่ M Code ที่เราจะสามารถนำมาใช้ในงานของเราได้จริงๆ ในกรณีที่พบได้บ่อย เช่น เราสามารถใช้ M Code ใช้แก้ปัญหาเมื่อข้อมูลอยู่ตำแหน่งไม่แน่นอนได้ ทุกคนจะได้เห็นภาพมากขึ้นว่าเราจะเรียนรู้ M Code ไปทำไมกัน??
let
Source = ...,
MyTable = ตารางต้นฉบับที่เตรียมไว้,
MyTable = #"Replaced Value",
AddIndex = Table.AddIndexColumn(MyTable, "Index", 1, 1, Int64.Type),
FilterRows = Table.SelectRows(AddIndex, each ([Column1] = "ผลไม้")),
FruitRow = FilterRows{0}[Index],
Result = Table.Skip(MyTable,FruitRow-1)
in
Result
ได้ผลลัพธ์แบบนี้
วิธีที่ 2 : ใช้ความรู้เรื่อง List มาช่วย
แบบนี้เราสามารถทำให้ข้อมูลใน Column1 เป็น List แล้วใช้ List.PositionOf เพื่อหาตำแหน่งของคำที่ต้องการได้ เช่น
ทำให้คอลัมน์แรกเป็น List ก่อนด้วยการคลิ๊กขวาที่คอลัมน์แรกแล้วกด Drill Down เพื่อให้อ้างอิงข้อมูลคอลัมน์ให้เป็น List
= MyTable[Column1]
จากนั้นใช้ List.PositionOf ครอบเข้าไป ก็จะหาตำแหน่งของผลไม้ ออกมาเป็น index ที่ 3
= List.PositionOf(MyTable[Column1],"ผลไม้")
แล้วเราก็อาจเก็บค่านี้ไว้ในตัวแปร PositionFruit
แล้วเอาไปเรียกใช้ใน Table.Skip ได้เลย เช่น
= Table.Skip(MyTable,PositionFruit)
ก็จะได้ผลลัพธ์ที่ต้องการครับ สรุป M Code ทั้งหมดเป็นแบบนี้
let
Source = ...,
MyTable = ตารางต้นฉบับที่เตรียมไว้,
PositionFruit = List.PositionOf(MyTable[Column1],"ผลไม้"),
Result = Table.Skip(MyTable,PositionFruit)
in
Result
ขั้นตอนพื้นฐานก็คือ เราต้องใส้ข้อมูลแกน x และ แกน y เข้าไปในกราฟ จึงจะแสดงออกมาได้ โดยที่ข้อมูลในแต่ละแกนอาจเป็น List ก็ได้ (ณ ตอนนี้มันยังมีปัญหากับภาษาไทย ดังนั้นให้ทำข้อมูลเป็น Eng ไปก่อนนะครับ)
(ส่วน r คือตัวที่บอกว่าเป็น raw string ใช้เพื่อให้ python ตีความอักขระ \ ให้เป็นข้อความจริงๆ ไม่ใช่อักษรพิเศษ มันจะได้ใช้งาน Regex ได้ไม่มีปัญหา)
\d matches any digit. = ตัวเลขอะไรก็ได้
{2,3} specifies that the preceding element (in this case, \d) must occur at least 2 and at most 3 times. = มีจำนวน 2-3 ครั้ง (ในที่นี้ก็คือเลข 2-3 ตัว)
-matches the dash character literally. = เครื่องหมาย –
ทีนี้วิธีใช้ใน Excel ก็คือตามมันแนะนำเลย แค่เรา Link กับ Text ใน Cell ได้ และเราไม่จำเป็นต้อง Print หากว่าผลออกมาเป็น List เราสามารถเอาออกมาเป็น Excel Value ได้เลย เช่น
import re
text = xl("B1")
pattern = r'\d{2,3}-\d{3}-\d{4}'
result = re.findall(pattern, text)
เราจะเห็นว่า re.findall จะสามารถให้ผลเป็น List ที่เก็บผลลัพธ์ทั้งหมดที่ Match เจอกับ Pattern เราได้เลย
อย่างไรก็ตาม การพึ่งพาแต่ AI โดยไม่เข้าใจอะไร Syntax อะไรเองเลย ก็อาจทำให้ได้ผลลัพธ์ที่ไม่ถูกต้อง เช่น Pattern ที่เราระบุไปจริงงๆ แล้วเป็น Pattern ที่ไม่ค่อยมีความยืดหยุ่นเท่าไหร่นัก เนื่องจากมีการบังคับว่าสิ่งที่ต้องการ Match ต้องมี – ด้วยเสมอ
โดยที่ทุก character ใน [ ] ก็คือเจอตัวไหนก็ได้นั่นเอง
import re
text = xl("B1")
pattern = r'[, |;]'
result=re.split(pattern,text)
แบบนี้ผมก็จะได้ว่า
ซึ่งเนื่องจากเรามี space หลายที มันก็อาจมีการแยกหลายรอบ ซึ่งเราก็แค่หาทางจัดการ item ใน list นี้ให้เรียบร้อย เช่น อาจใช้ list comprehension แบบนี้ก็ได้ คือคัดเลือกเฉพาะ item ที่ไม่ใช่ blank text
import re
text = xl("B1")
pattern = r'[, |;]'
result = re.split(pattern, text)
[x for x in result if x != '']
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.