Tôi là một tội nhân: Tôi chạy Excel trên máy Mac. Lỗi ngày 0 tháng 1 năm 1900.

Tôi là một tội nhân: Tôi chạy Excel trên máy Mac. Lỗi ngày 0 tháng 1 năm 1900.

Tôi xin lỗi, tôi chỉ coi thường Windows nhưng tôi lại chịu đựng được Excel và Word. Hôm nay nó thực sự đang thử thách tôi. Vì vậy, để tạo ra sự cố, tôi đang chạy macOS Big Sur, AppleScript 2.7, Script Editor 2.11 và Excel 2019 (hoặc Microsoft 365 2021?) trên macbook pro; Tôi biết, tôi chỉ đang cầu xin vấn đề tương thích.

Tôi chạy AppleScript để gọi ngày hiện tại và sau đó trong Excel, tôi muốn một cột cụ thể có tháng văn bản được đánh vần đầy đủ vì tôi kỳ lạ như vậy. Vì lý do nào đó, cho dù tôi định dạng cột như thế nào thì nó cũng không hiển thị tháng được viết đúng chính tả. Cả hai chương trình đều đáng trách. AppleScript không xử lý chính xác chức năng tháng vì một số lý do nhưng tôi biết bạn không liên quan gì đến điều đó. Nhưng lỗi Excel RẤT ngẫu nhiên. Đôi khi cột sẽ không hiển thị bất kỳ giá trị nào trong một cột khi tập lệnh chạy. Đôi khi nó sẽ trở lại tháng giêng khi đã là tháng ba. Và sau đó MỘT lần nó sẽ hiển thị đúng tháng cho ngày và giờ nhất định. Và lần sau, không có gì. Điều duy nhất có vẻ đang hoạt động trong cột đó ngay bây giờ là thay đổi tập lệnh AppleScript để trả về thời gian hiện tại và ít nhất là nó hoạt động trong cột này. Ngoài ra, tôi nhận thấy rằng khi tôi sử dụng hàm dấu thời gian DAY(TODAY()) thì nó cũng trả về ngày 0 tháng 1 năm 1900. Không có gì khó chịu hơn sự ngẫu nhiên của những lỗi này. Ồ, và đó là vấn đề tương tự ở 3 trang tính khác nhau trong cùng một cột. Hãy hình dung đi. Xin chúc một ngày tuyệt vời.




Trả lời:

Bạn thấy gì nếu bạn sử dụng điều này trong cột của bạn?

=TEXT(HÔM NAY(),"MMMM")

hoặc thậm chí chỉ thế này

=HÔM NAY()

tùy chỉnh định dạng cho MMMM.

Bạn luôn có thể thêm công thức đó vào các ô quan tâm và chuyển đổi thành giá trị nếu bạn không muốn chúng tự động cập nhật khi tháng thay đổi.

Tái bút - khi bạn gặp vấn đề về mã hóa, việc bạn đăng mã của mình thường rất hữu ích.



Trả lời:

Tôi thề là đôi khi các bạn thật là một kẻ gây cười.=TEXT(TODAY(),"MMMM") mà thậm chí không thay đổi định dạng của bất kỳ cột nào là Tháng Ba, Tháng Ba và Tháng Ba; đúng như lời tiên tri của các vị thần công nghệ. Bạn là bậc thầy về máy móc còn tôi chỉ là kẻ bán rong rác rưởi.

Tái bút - Chà, nếu bạn muốn đánh cắp mã của tôi đến mức tệ thì đây là khoảng một tuần học AppleScript từ các trang web cho dự án thú cưng của tôi. Tôi có được một hạt thạch không?

--Mã tấm nồi hơi để thao tác HTML để cho phép chúng tôi kéo giá thị trường của cổ phiếu.--

--3 bộ sửa đổi cho 3 cổ phiếu--

###################################################### #######

để trích xuấtTextBitcoin(searchTextBitcoin, startTextBitcoin, endTextBitcoin)

đặt tid thành dấu phân cách mục văn bản của AppleScript

đặt startTextBitcoin thành ">"

đặt searchTextBitcoin thành {"priceValue___11gHJ", 0 & searchTextBitcoin}

đặt dấu phân cách mục văn bản của AppleScript thành startTextBitcoin

đặt endItemsBitcoin thành mục văn bản -1 của searchTextBitcoin

đặt dấu phân cách mục văn bản của AppleScript thành endTextBitcoin

đặt BeginningToEndBitcoin thành văn bản mục 1 của endItemsBitcoin

đặt dấu phân cách mục văn bản của AppleScript thành startTextBitcoin

đặt endTextBitcoin thành ( các mục văn bản từ 2 đến -1 của BeginningToEndBitcoin) làm bản ghi

đặt dấu phân cách mục văn bản của AppleScript thành tid

kết thúc trích xuấtVăn bảnBitcoin


để trích xuấtTextLitecoin(searchTextLitecoin, startTextLitecoin, endTextLitecoin)

đặt tid thành dấu phân cách mục văn bản của AppleScript

đặt startTextLitecoin thành ">"

đặt searchTextLitecoin thành {"priceValue___11gHJ", 0 & searchTextLitecoin}

đặt dấu phân cách mục văn bản của AppleScript thành startTextLitecoin

đặt endItemsLitecoin thành mục văn bản -1 của searchTextLitecoin

đặt dấu phân cách mục văn bản của AppleScript thành endTextLitecoin

đặt BeginningToEndLitecoin thành văn bản mục 1 của endItemsLitecoin

đặt dấu phân cách mục văn bản của AppleScript thành startTextLitecoin

đặt endTextLitecoin thành ( mục văn bản 2 đến -1 của BeginningToEndLitecoin) làm bản ghi

đặt dấu phân cách mục văn bản của AppleScript thành tid

trích xuất cuốiTextLitecoin


để trích xuấtTextDogecoin(searchTextDogecoin, startTextDogecoin, endTextDogecoin)

đặt tid thành dấu phân cách mục văn bản của AppleScript

đặt startTextDogecoin thành ">"

đặt searchTextDogecoin thành {"priceValue___11gHJ", 0 & searchTextDogecoin}

đặt dấu phân cách mục văn bản của AppleScript thành startTextDogecoin

đặt endItemsDogecoin thành mục văn bản -2 của searchTextDogecoin

đặt dấu phân cách mục văn bản của AppleScript thành endTextDogecoin

đặt BeginningToEndDogecoin thành văn bản mục 1 của endItemsDogecoin

đặt dấu phân cách mục văn bản của AppleScript thành startTextDogecoin

đặt endTextDogecoin thành ( mục văn bản từ 2 đến -1 của BeginningToEndDogecoin) làm bản ghi

đặt dấu phân cách mục văn bản của AppleScript thành tid

trích xuất cuốiTextDogecoin

###################################################### #######

--Một tuyên bố để mở trang web nơi đo lường lượng hàng tồn kho--

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/bitcoin/"

kết thúc kể


độ trễ 2


--Một hàm phân biệt dữ liệu trên trang web theo loại và số. Nó

--cũng sử dụng JavaScript để ghi dữ liệu sang định dạng có thể sử dụng được.

để getInputByClassBitcoin(theClass, num)

nói với ứng dụng "Safari"

đặt BitcoinInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả lại BitcoinĐầu vào

kết thúc getInputByClassBitcoin


--Hàm có tiêu chí lớp và số được lấy thủ công từ trang web--

getInputByClassBitcoin("priceValue___11gHJ", 0)


--Đặt giá cổ phiếu tức thời thành một biến để nhập vào Excel--

đặt BitcoinPrice thành getInputByClassBitcoin("priceValue___11gHJ", 0)

trên BitcoinFunction(BitcoinPrice)

đặt BitcoinFunction thành extractTextBitcoin(BitcoinPrice, "<div class=>", "</div>")

trả về BitcoinFunction(BitcoinPrice)

kết thúc chức năng Bitcoin

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/litecoin/"

kết thúc kể


độ trễ 2


để getInputByClassLitecoin(theClass, num)

nói với ứng dụng "Safari"

đặt LitecoinInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả về LitecoinĐầu vào

kết thúc getInputByClassLitecoin


getInputByClassLitecoin("priceValue___11gHJ", 0)


đặt LitecoinPrice thành getInputByClassLitecoin("priceValue___11gHJ", 0)

trên LitecoinFuction(Litecoinprice)

đặt LitecoinFuction thành extractTextLitecoin(LitecoinPrice, "<div class=>", "</div>")

trả về LitecoinFuction(Litecoinprice)

kết thúc LitecoinFuction

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/dogecoin/"

kết thúc kể


độ trễ 2


để getInputByClassDogecoin(theClass, num)

nói với ứng dụng "Safari"

đặt DogecoinInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả về DogecoinĐầu vào

kết thúc getInputByClassDogecoin


getInputByClassDogecoin("priceValue___11gHJ", 0)


đặt DogecoinPrice thành getInputByClassDogecoin("priceValue___11gHJ", 0)

trên DogecoinFuction(DogecoinPrice)

đặt DogecoinFuction thành extractTextDogecoin(Dogecoinprice, "<div class=>", "</div>")

trả về DogecoinFuction(DogecoinPrice)

kết thúc chức năng Dogecoin

(*

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/Ethereum/"

kết thúc kể


độ trễ 2


tới getInputByClassEthereum(theClass, num)

nói với ứng dụng "Safari"

đặt EthereumInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả về đầu vào Ethereum

kết thúc getInputByClassEthereum


getInputByClassEthereum("priceValue___11gHJ", 0)


đặt EthereumPrice thành getInputByClassEthereum("priceValue___11gHJ", 0)

trên EthereumFunction(Ethereumprice)

đặt EthereumFunction thành extractTextEthereum(EthereumPrice, "<div class=>", "</div>")

trả về Hàm Ethereum(Ethereumprice)

kết thúc chức năng Ethereum

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/Binance_coin/"

kết thúc kể


độ trễ 2


để getInputByClassBinance_coin(theClass, num)

nói với ứng dụng "Safari"

đặt Binance_coinInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả về Binance_coinĐầu vào

kết thúc getInputByClassBinance_coin


getInputByClassBinance_coin("priceValue___11gHJ", 0)


đặt Binance_coinPrice thành getInputByClassBinance_coin("priceValue___11gHJ", 0)

trên Binance_coinFunction(Binance_coinprice)

đặt Binance_coinFunction thành extractTextBinance_coin(Binance - coinPrice, "<div class=>", "</div>")

trả về Binance_coinFunction(Binance_coinPrice)

kết thúc Binance_coinChức năng

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/Tether/"

kết thúc kể


độ trễ 2


tới getInputByClassTether(theClass, num)

nói với ứng dụng "Safari"

đặt TetherInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả lại TetherĐầu vào

kết thúc getInputByClassTether


getInputByClassTether("priceValue___11gHJ", 0)


đặt TetherPrice thành getInputByClassTether("priceValue___11gHJ", 0)

trên TetherFunction(TetherPrice)

đặt TetherFunction thành extractTextTether(TetherPrice, "<div class=>", "</div>")

trả về TetherFunction(TetherPrice)

kết thúc chức năng Tether

###################################################### #######

nói với ứng dụng "Safari"

kích hoạt

thực hiện tập lệnh shell "mở https://coinmarketcap.com/currency/Polkadot/"

kết thúc kể


độ trễ 2


tới getInputByClassPolkadot(theClass, num)

nói với ứng dụng "Safari"

đặt PolkadotInput để thực hiện JavaScript "

document.getElementsByClassName('" & theClass & "')[" & num & "].innerHTML;" trong tài liệu 1

kết thúc kể

trả về PolkadotĐầu vào

kết thúc getInputByClassPolkadot


getInputByClassPolkadot("priceValue___11gHJ", 0)


đặt PolkadotPrice thành getInputByClassPolkadot("priceValue___11gHJ", 0)

trên PolkadotFunction(Polkadotprice)

đặt PolkadotFunction thành extractTextPolkadot(PolkadotPrice, "<div class=>", "</div>")

trả về hàm Polkadot(PolkadotPrice)

kết thúc chức năng Polkadot

###################################################### #######

*)

--Mở sổ làm việc Excel đã biên dịch, phủ nhận dữ liệu nhập của người dùng, tìm dữ liệu có sẵn tiếp theo--

--ô để nhập dữ liệu và điền vào các trường Năm, Tháng, Ngày, Giờ và Giá--

đặt {năm:y, tháng :m, ngày:d} thành ( ngày hiện tại )

nói với ứng dụng "Microsoft Excel"

mở "/Users/clusterflux/Desktop/人CRYPTO人_excel.xlsx"

đặt cảnh báo hiển thị thành sai

kích hoạt bảng đối tượng "ㅇㅅㅇBITCOINㅇㅅㅇ"

chỉ số hàng đầu tiên của ( lấy kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

đặt LastRowBitcoin thành chỉ mục hàng đầu tiên của ( kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

--ghi ngày giờ đọc từng thị trường vào file excel

đặt giá trị của ô ("I" & LastRowBitcoin + 1) thành y

đặt giá trị của ô ("J" & LastRowBitcoin + 1) thành m

đặt giá trị của ô ("K" & LastRowBitcoin + 1) thành d

đặt giá trị của ô ("L" & LastRowBitcoin + 1) thành (chuỗi thời gian của ( ngày hiện tại ))

đặt giá trị của ô ("M" & LastRowBitcoin + 1) thành Bitcoinprice

kích hoạt bảng đối tượng "ㅇㅅㅇLITECOINㅇㅅㅇ"

chỉ số hàng đầu tiên của ( lấy kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

đặt LastRowLitecoin thành chỉ mục hàng đầu tiên của ( kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

đặt giá trị của ô ("I" & LastRowLitecoin + 1) thành y

đặt giá trị của ô ("J" & LastRowLitecoin + 1) thành m

đặt giá trị của ô ("K" & LastRowLitecoin + 1) thành d

đặt giá trị của ô ("L" & LastRowLitecoin + 1) thành (chuỗi thời gian của ( ngày hiện tại ))

đặt giá trị của ô ("M" & LastRowLitecoin + 1) thành Litecoinprice

kích hoạt bảng đối tượng "ㅇㅅㅇDOGECOINㅇㅅㅇ"

chỉ số hàng đầu tiên của ( lấy kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

đặt LastRowDogecoin thành chỉ mục hàng đầu tiên của ( kết thúc ( ô cuối cùng của cột 9) hướng lên trên cùng )

đặt giá trị của ô ("I" & LastRowDogecoin + 1) thành y

đặt giá trị của ô ("J" & LastRowDogecoin + 1) thành (chuỗi thời gian của ( ngày hiện tại ))

đặt giá trị của ô ("K" & LastRowDogecoin + 1) thành d

đặt giá trị của ô ("L" & LastRowDogecoin + 1) thành (chuỗi thời gian của ( ngày hiện tại ))

đặt giá trị của ô ("M" & LastRowDogecoin + 1) thành Dogecoinprice

đặt tên sổ làm việc thành ("人CRYPTO人_excel.xlsx") làm chuỗi

đặt DestinationPath thành ( đường dẫn đến máy tính để bàn dưới dạng văn bản ) & tên sổ làm việc

lưu sổ làm việc đang hoạt động trong DestinationPath

độ trễ 2

đóng mọi sổ làm việc, lưu không

nói với ứng dụng "Microsoft Excel"

từ bỏ

kết thúc kể


đặt closeURL thành {"https://coinmarketcap.com/currency/bitcoin/", "https://coinmarketcap.com/currency/litecoin/", "https://coinmarketcap.com/currency/dogecoin/"}


lặp lại với URL trong URL đóng

yêu cầu ứng dụng "Safari" đóng ( mọi tab của mọi cửa sổ URL chứa (nội dung của URL ))

kết thúc lặp lại


Tôi nghĩ bạn sẽ không muốn tôi quảng cáo mã MacBook siêu đặc biệt của tôi ở phía sân chơi của bạn. Mấu chốt của lỗi là ở đây:

đặt {năm:y, tháng :m, ngày:d} thành ( ngày hiện tại )

Khi tôi biên dịch để kiểm tra trong AppleScript, từ "tháng" chuyển sang màu xanh lam trong khi ngày và năm chuyển sang màu tím, do đó có điều gì đó không rõ ràng về cách AppleScript đang hoạt động. Mọi nơi trên mạng đều nói rằng tháng là mật khẩu kỳ diệu để có được những hạt thạch cho tappy tippy nhưng tôi nói rằng họ đang bị lừa. Nhưng nghiêm túc mà nói thì tôi có thể mua một cốc coca-cola cho nội dung được không? ôiiii.

*Ai đó* có thể chạy nó với Excel và Automator trên máy Mac cục bộ và chỉ cần dành hàng giờ để học thêm mã trong khi lấy dữ liệu quý giá đó từ người đàn ông đó.

=TODAY() trong cả 3 cột Excel nghịch ngợm đều trả về 5/3/21. Giống như bằng một cây đũa thần, lỗi đã biến mất và người điều hành diễn đàn không bao giờ nhìn thấy nữa cho đến khi 3 năm nữa trôi qua. Và mùng 3 tháng 3 mình sẽ được 1 hạt thạch cho 2 máy tính. Cảm ơn vì đã giữ nó sang trọng.



Trả lời:

Hiện tại, ngày 0 tháng 1 năm 1900 đã dừng thử nghiệm nhưng tôi gặp phải vấn đề sau. Tôi đã tìm ra cách nhập ("=TEXT(TODAY(), MMMM)") vào AppleScript nhưng Excel thêm @ và làm rối công thức. Tôi đã phải chụp ảnh màn hình để chứng minh. Tôi thậm chí đã thử nhập -@ vào AppleScript nhưng các gremlin máy tính vẫn chưa hoàn thành với tôi.

đặt giá trị của ô ("J" & LastRowDogecoin + 1) thành ("=TEXT(TODAY(), -@ + MMMM)")



Trả lời:

Tôi là VBA, không phải tập lệnh Apple, nhưng bạn sẽ có thể đặt công thức của ô thay vì giá trị - đây là cách tôi mong đợi nó được viết (nhân đôi dấu ngoặc kép để truyền chữ thay vì dấu phân cách chuỗi)

đặt công thức của ô ("J" & LastRowDogecoin + 1) thành ("=TEXT(TODAY(),""MMMM"")")



Trả lời:

Không, mã thần lùn lại thắng. Đó là câu trích dẫn mà nó phát sinh ra một lỗi khác. Chúng ta có thể tiếp tục cố gắng giải quyết nó nhưng tôi chỉ có thể trình lên thần đèn trò chơi rằng có lẽ nó không quan trọng đến thế. Nhưng ít nhất tôi đã khiến *ai đó* chú ý đến nó. Tôi đánh giá cao việc bạn dành thời gian để giải đáp câu hỏi và giải quyết những câu chuyện cười. Cuối cùng tôi cũng nhận được phản hồi trên một số diễn đàn.

Mặc dù vậy, tôi rất phấn khích vì đã được ai đó dạy cho tôi một đoạn mã thực sự mượt mà, hợp lý hơn nhiều so với mã của tôi nhưng vấn đề này vẫn sẽ tồn tại vì đây là một trục trặc nhỏ về định dạng sẽ khiến tôi khó chịu.



Trả lời:

Chào Noname,

Nếu điều đó khiến bạn cảm thấy dễ chịu hơn thì Microsoft Word, Excel và PowerPoint đều là những sản phẩm nền tảng của Apple đã được chuyển sang Windows. Phiên bản 1 của Microsoft Office là năm 1985 và đó là trước khi có Windows. Microsoft Office chỉ dành cho Mac trong hai năm đầu tiên.

Hàm bảng tính DAY trả về số tháng của ngày trong đối số của hàm. Hôm nay là ngày 6 tháng 3. Công thức ô =DAY(TODAY()) trả về giá trị 6 hôm nay. Điều đó đang hoạt động như mong đợi.

Điều không hoạt động như mong đợi là định dạng. Khi tôi định dạng giá trị 6 (cho dù nó xuất phát từ hàm TODAY hay chỉ nhập số 6 vào một ô, tôi nhận được kết quả không chính xác. Khi 6 được định dạng là mm/dd/yyyy, tôi nhận được 01/61/1900. Excel cho Windows đang thực hiện chính xác và trả lời là 06/01/1900. Các giá trị khác cũng đang được định dạng không chính xác.

Ngày tháng trong Excel là số nguyên. Ngày thứ nhất là ngày 1 tháng 1 năm 1900.

Tôi nghĩ bạn đã phát hiện ra lỗi và tôi sẽ báo cáo ngay cho Microsoft để sửa lỗi. Một trong những lợi ích của việc trở thành MVP là đôi khi các báo cáo lỗi của chúng tôi được ưu tiên và tôi nghĩ điều này sẽ được ưu tiên.

Giữ chặt.



Trả lời:

CHÀO

Tôi quay lại lần nữa.

Tháng dường như đang hoạt động chính xác đối với tôi. Giá trị trong ô bạn muốn trả về tháng có được định dạng là ngày không?

Comments

Popular posts from this blog

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Khẩn cấp - File Excel chứa các ký tự đặc biệt ở họ và tên liên hệ