iT邦幫忙

0

EXCEL從資料庫連線,表格內數字1如何自動改綠色打勾圖示呢?

  • 分享至 

  • xImage

EXCEL適從資料庫連線(微軟MSSQL),建立查詢資料表而已
https://ithelp.ithome.com.tw/upload/images/20210122/20130963X26L1n85oP.png

https://ithelp.ithome.com.tw/upload/images/20210122/201309633CecxHjZUW.png

https://ithelp.ithome.com.tw/upload/images/20210122/20130963SXsP35wfHT.png
有設定格式化的條件式,每次要點人為因素點兩下,才會自動切換綠色打勾或者紅色打叉

但是資料重新整理,就會變原形1和0,請問如何當下重新整理資料庫立即更新綠色打勾或者紅色打叉呢?

原本設定格式化的條件,一個一個點下去就會切換後
https://ithelp.ithome.com.tw/upload/images/20210122/20130963Y3xIQroXmh.png
但是資料庫平台使用者會修改數據,報表所以時常要重新整理數據更新
https://ithelp.ithome.com.tw/upload/images/20210122/20130963kAlAhj0qmv.png
重新整理後就會被打原形0與1
https://ithelp.ithome.com.tw/upload/images/20210122/201309632yH9ZQo5tN.png

謝謝

看更多先前的討論...收起先前的討論...
將資料跟顯示分開。
要不然資料讀取進來是無法直接觸發的。
不要用原欄位來做轉換。
但是每天都會查報表,很難不去使用原欄位。請問有建議嗎?
Zed_Yang iT邦新手 3 級 ‧ 2021-01-22 15:25:48 檢舉
圖示欄位另外拉出來
將原本值的欄位用隱藏的?

[隱藏或顯示列或欄]
https://support.microsoft.com/zh-tw/office/%E9%9A%B1%E8%97%8F%E6%88%96%E9%A1%AF%E7%A4%BA%E5%88%97%E6%88%96%E6%AC%84-659c2cad-802e-44ee-a614-dde8443579f8
原本值都沒有隱藏的,不過這不是重點吧?
只是要把欄位的1和0如何自動切換打勾綠色和打叉紅色的設定格式化的條件觸發
但是偏偏這值都是從SQL資料庫連線,重新整理就會被打原形
測試另一個沒有連線資料庫的數據,會自動把1切換打勾綠色的圖示
所以比較傷腦筋
可以看看一樓的,我追加了圖片表達,謝謝
用個巨集或是寫個公式處理。
不要用格式規範的方式。

因為那是要有更新事件才會有作用。
而資料庫的資料貼進來時,並不會跑格式規範。
這其實也不算是bug。它只是實呈現資料。

一般做法就是用個公式來跑。就行了。
goodnight iT邦研究生 2 級 ‧ 2021-01-23 09:42:17 檢舉
即然要用人工觸發條件, 直接寫成 vba , 用 vba 去sql server 取資料, 並改成你要的格式
如果你不會 vba , 另外開版徵求, 或請你們的廠商專案開發, 不會很多錢, 或是把資料貼到另一個 有設條件的 excel , 做法很多, 你要評估這張表使用的人員和時效, 再決定做法
1. VBA 程式直接讀取檔, 修改
2.取回資料轉貼有修件的EXCEL
goodnight iT邦研究生 2 級 ‧ 2021-01-23 09:51:46 檢舉
我不太確定能不能這樣做
https://kknews.cc/zh-tw/career/age6neg.html
https://ithelp.ithome.com.tw/questions/10184966
https://blog.gtwang.org/programming/excel-vba-events/
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
rogeryao
iT邦超人 8 級 ‧ 2021-01-22 21:42:19
最佳解答

EXCEL 是哪一版 ? 請用以下方法試試.
方法一 :

每次要點人為因素點兩下 <== 去除點兩下的程式碼,設定格式化的條件式不變

方法二 :

SELECT Item,B1,
CASE WHEN B1=1 THEN N'✔' WHEN B1=0 THEN N'✖' Else '' END AS NEWB1 
FROM B
ORDER BY Item

https://ithelp.ithome.com.tw/upload/images/20210122/20085021hNODOk5BTp.png

看更多先前的回應...收起先前的回應...

方法二是用在巨集上編輯嗎?

rogeryao iT邦超人 8 級 ‧ 2021-01-25 10:41:55 檢舉

不是.

1.改變原本抓 MSSQL 資料的 SQL 指令
2.設定格式化的條件式,針對不同字(✔,✖)顯示不同顏色
rogeryao iT邦超人 8 級 ‧ 2021-01-25 11:01:42 檢舉

在 Excel 2019 時:
依照你原本的"設定格式化的條件式",排除 A: 每次要點人為因素點兩下,才會自動切換綠色打勾或者紅色打叉 , B: 一個一個點下去就會切換 ; 也就是沒加任何巨集在重新整理後是不會被打原形0與1

或許是巨集造成的異常

我對MSSQL資料庫語法沒那麼熟,只略基礎。NEWB1是一定要新增欄位的資料庫嗎?

rogeryao iT邦超人 8 級 ‧ 2021-01-25 12:02:12 檢舉

將你的 SQL 貼上來看看吧

SELECT TOP (100) PERCENT dbo.psd008a.psd008a002 AS 表單單號, dbo.psd008a.applydept AS 員工部門, dbo.psd008a.applyname AS 員工姓名, 
dbo.psd008a.applydate AS 申請日期, 
dbo.psd008a.select2 AS 製程單別, 
dbo.psd008a.select3 AS 製程單號, 
dbo.psd008a.number AS 異常數量, 
dbo.psd008a.checkbox8 AS 人為因素, 
dbo.psd008a.checkbox9 AS 設備異常, 
dbo.psd008a.checkbox10 AS 製程異常, 
dbo.psd008a.checkbox11 AS 材料異常, 
dbo.psd008a.explain1 AS 異動說明
FROM dbo.psd008a INNER JOIN
dbo.resda ON dbo.psd008a.psd008a001 = dbo.resda.resda001 AND dbo.psd008a.psd008a002 = dbo.resda.resda002
WHERE     (DATEDIFF(dd, dbo.psd008a.applydate, GETDATE()) <= 90)
rogeryao iT邦超人 8 級 ‧ 2021-01-25 12:34:13 檢舉
dbo.psd008a.checkbox8 AS 人為因素, 
dbo.psd008a.checkbox9 AS 設備異常, 
dbo.psd008a.checkbox10 AS 製程異常, 
dbo.psd008a.checkbox11 AS 材料異常, 

將以上程式碼改寫成

CASE WHEN dbo.psd008a.checkbox8=1 THEN N'✔' WHEN dbo.psd008a.checkbox8=0 THEN N'✖' Else '' END AS 人為因素, 
CASE WHEN dbo.psd008a.checkbox9=1 THEN N'✔' WHEN dbo.psd008a.checkbox9=0 THEN N'✖' Else '' END AS 設備異常,
CASE WHEN dbo.psd008a.checkbox10=1 THEN N'✔' WHEN dbo.psd008a.checkbox10=0 THEN N'✖' Else '' END AS 製程異常,
CASE WHEN dbo.psd008a.checkbox11=1 THEN N'✔' WHEN dbo.psd008a.checkbox11=0 THEN N'✖' Else '' END AS 材料異常, 

或是

CASE WHEN dbo.psd008a.checkbox8='1' THEN N'✔' WHEN dbo.psd008a.checkbox8='0' THEN N'✖' Else '' END AS 人為因素, 
CASE WHEN dbo.psd008a.checkbox9='1' THEN N'✔' WHEN dbo.psd008a.checkbox9='0' THEN N'✖' Else '' END AS 設備異常,
CASE WHEN dbo.psd008a.checkbox10='1' THEN N'✔' WHEN dbo.psd008a.checkbox10='0' THEN N'✖' Else '' END AS 製程異常,
CASE WHEN dbo.psd008a.checkbox11='1' THEN N'✔' WHEN dbo.psd008a.checkbox11='0' THEN N'✖' Else '' END AS 材料異常, 
rogeryao iT邦超人 8 級 ‧ 2021-01-25 14:47:04 檢舉

Excel 版本可能有差異,請檢查以下設定
https://ithelp.ithome.com.tw/upload/images/20210125/20085021XmPbMamIeb.png

可以了~~謝謝rogeryao大大熱心
https://ithelp.ithome.com.tw/upload/images/20210125/20130963E4705nz01l.png

0
ccenjor
iT邦高手 1 級 ‧ 2021-01-22 19:17:03

我個人做法:
首先先找到一個字型有包含你要的符號字元。
再點取「插入>符號」插入那個字元。(我是用WINGDINGS)M2儲存格內容。
https://ithelp.ithome.com.tw/upload/images/20210122/20109881PWgFCMMc38.png
再將要格式儲存格範圍(可以超出現有資料範圍,以利重新整理變動也會同步更新)框選起來,自訂格式為:
https://ithelp.ithome.com.tw/upload/images/20210122/20109881mPjlTmQCtJ.png

測試過,還是會被打原形,office2010版的,主要連線資料庫數據喔,並不是本機檔案的數據。

我要發表回答

立即登入回答