Lời khuyên cho việc chơi golf trong Excel?


20

Thật kỳ lạ khi tôi chưa thấy điều này, vì Excel dường như là một ngôn ngữ hợp lệ để chơi gôn mã (mặc dù 'trình biên dịch' không miễn phí).

Excel có phần giống như một ký tự đại diện trong việc chơi golf, giỏi các thử thách chơi gôn có độ phức tạp trung bình và đôi khi cũng là những thử thách đơn giản hơn. Thường xuyên hơn không, Excel rất giỏi trong các thử thách với thao tác chuỗi và thao tác số chuỗi hỗn hợp.

Bạn có mẹo chung nào để chơi golf trong Excel? Tôi đang tìm kiếm những ý tưởng có thể được áp dụng cho các vấn đề về mã golf nói chung ít nhất là cụ thể đối với Excel (KHÔNG phải VBA). Xin vui lòng, một mẹo cho mỗi câu trả lời.


4
hình như cell-automata không phải là thứ gì đó có liên quan đến excel ... :(

Tôi đã tự hỏi nếu nó là hợp lệ để tạo một UDF với VBA?
danieltakeshi

1
@danieltakeshi - không; tốt, không phải là câu trả lời của Excel - thay vào đó, nếu bạn sử dụng Excel VBA và sau đó gọi nó từ cửa sổ ngay lập tức, bảng kích hoạt hoặc chương trình con, mà nó thường được coi là hợp lệ
Taylor Scott

Câu trả lời:


11

Viết tắt tham khảo:

Nếu chương trình của bạn được yêu cầu lấy nhiều đầu vào, bạn có thể muốn có thể múc tất cả chúng cùng một lúc. để đọc nhiều ô dưới dạng một mảng, người ta có thể làm như ví dụ:

Ví dụ:
=len(A1)+Len(B1)+LEN(C1)
có thể là
=SUM(LEN(A1:C1))

=SUM(LEN(A1:C1 A2:C2 A3:C3))
có thể là
=SUM(LEN(A1:C3))

=SUM(LEN(A1:A1024))
có thể là
=SUM(LEN(A:A))

=SUM(LEN(A:A B:B C:C))
có thể là
=SUM(LEN(A:C))


1
Tôi biết điều này không phải là một tuyệt đỉnh, nhưng nó đủ cụ thể để excel mà tôi nghĩ rằng nó nên được bao gồm.

9

Viết tắt tốc ký:

Các CONCATENATEchức năng có thể được thay thế bằng &biểu tượng 100% thời gian, miễn là đối số đầu tiên là một chuỗi, hoặc tế bào.

ví dụ:
=CONCATENATE(A1,B1)
có thể rút ngắn thành
=A1&B1


9

Vector hóa với Mảng

Bất cứ khi nào một hàm lấy một mảng làm đối số thay vì một singleton, hàm đó cũng sẽ xuất ra một mảng có giá trị kết quả cho các phân tử tương ứng.

Ví dụ:
=LEN(A1)+LEN(B2)+LEN(C3)
có thể được thay thế bằng
=SUM(LEN({A1,B2,C3}))


1
Quá trình này thường được gọi là "vector hóa" nếu bộ nhớ của tôi phục vụ tốt cho tôi.
Conor O'Brien

@ ConorO'Brien Cảm ơn! Tôi đã thay đổi câu trả lời của tôi!

2

Chuyển đổi một số thành văn bản:

Đây là một mẹo rất đơn giản, nhưng nó có thể hữu ích với một số ...

  • Nếu bạn cần chuyển đổi một số thành văn bản từ trong một công thức, hãy sử dụng toán tử nối để nối hai phần của số dưới dạng một chuỗi (tức là 1&23).
  • Nếu bạn cần chuyển đổi một số thành văn bản để sử dụng theo tham chiếu ô (nghĩa là A1), hãy thay đổi Định dạng số của ô thành Văn bản để loại bỏ nhu cầu thêm byte.
  • Xem biểu đồ dưới đây để so sánh các phương pháp số-văn bản.

Biểu đồ tham khảo nhanh:

+-------------------------------------------------------------------------------------+
|   | A               | B        | C         | D                | E                   |
|-------------------------------------------------------------------------------------|
| 1 | Formula         | Bytes    | Result    | ISTEXT(cell)¹    | ISTEXT(formula)²    |
|-------------------------------------------------------------------------------------|
| 2 | =TEXT(123,0)    | 12       | 123       | TRUE             | TRUE                |
| 3 | ="123"          | 6        | 123       | TRUE             | TRUE                |
| 4 | =1&23           | 5        | 123       | TRUE             | TRUE                |
| 5 | '123            | 4        | 123       | TRUE             | NOT VALID           |
| 6 | 123             | 3        | 123       | TRUE             | FALSE               |
| 7 | 123             | 3        | 123       | FALSE            | FALSE               |
+-------------------------------------------------------------------------------------+

Note: The result for cell C6 has been formatted as text, whereas the result for C7 has not.

¹ Denotes =ISTEXT(C2), =ISTEXT(C3), =ISTEXT(C4), etc.
² Denotes =ISTEXT(TEXT(123,0)), =ISTEXT("123"), =ISTEXT(1&23), etc.

1

Vector hóa các mảng của các tế bào:

Mẹo Vectorization với các mảng Hiển thị cách bạn có thể đánh xuống một hàm với một mảng bằng cách sử dụng định dạng cụ thể trong mảng. Có thể làm điều tương tự với các ô và sẽ giúp bạn tiết kiệm nhiều byte trong thời gian dài. Giả sử bạn có tờ sau:

tờ ví dụ

Và chúng tôi muốn tìm thời hạn sử dụng cao nhất của một loại trái cây.

Nếu không có Vectorization, người ta có thể sử dụng hai công thức như vậy: nhập mô tả hình ảnh ở đây

Và điều này không đưa ra một câu trả lời chính xác, nhưng Điểm cho môn đánh gôn này là không thông thường, và có lẽ sẽ không được chấp nhận rộng rãi. Trên hết, điều này sử dụng chức năng kéo xuống (Ew), tạo ra một câu trả lời khó hiểu.

Thay vào đó, chúng ta có thể đặt hàm vào cột D ngay với công thức trong E2. Để làm điều này, bạn thay thế (trong trường hợp này là B2 và C2) các biến của bạn bằng các mảng cho phạm vi bạn muốn kiểm tra. Do đó, công thức của bạn trở thành:
nhập mô tả hình ảnh ở đây

Điều này giúp bạn tiết kiệm một vài byte cũng như làm cho mục nhập của bạn có thể ghi điểm chính xác.


1

Tốc ký Boolean:

Thay vì sử dụng =TRUE()và các =FALSE()chức năng, sử dụng =1=1=1=2.


0

ISBLANK () tốc ký:

Thay vì sử dụng =ISBLANK(A1), sử dụng =A1=0để xác định xem một ô (tức là A1) có trống không.

Lưu ý: Phím tắt này sẽ không hoạt động nếu ô A1 chứa 0 . Trong trường hợp đó, bạn sẽ cần phải sử dụng =A1="" .


0

Rút ngắn tên tờ

Nếu bạn đổi tên Sheet2thành Sthì tham chiếu để Sheet2!a0trở thành S!a0.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.