Hướng dẫn powershell change excel cell color based on value - powershell thay đổi màu ô excel dựa trên giá trị

Ngày 29 tháng 1 năm 2008

Này, anh chàng kịch bản! Tôi cần một tập lệnh có thể đọc tất cả các giá trị trong một bảng tính và sau đó thay đổi màu nền của các ô trong bảng tính đó dựa trên một loạt các giá trị. Ví dụ: nếu giá trị nhỏ hơn 20 ô có màu một màu; Nếu ô nằm trong khoảng từ 20 đến 40, nó sẽ có màu khác; và như thế. Làm thế nào để làm điều đó?

- Esw

Này, ESW. Đối với bạn những người nghiện thời tiết ngoài kia, vâng, đêm qua khu vực Seattle đã bị một cơn bão tuyết giữa mùa đông khác, một thứ phải đổ ít nhất một inch, thậm chí có thể là một inch rưỡi trên nhà của anh chàng kịch bản người viết cột này. Nó có thể là ngày tận thế? Trên thực tế, những người ở vùng này của đất nước sẽ có cơ hội sống sót tốt hơn nhiều so với thế giới so với việc họ vượt qua một chút tuyết. . .]

Tất nhiên, chúng tôi biết nhiều bạn đang nghĩ gì: Trời ơi, cả một inch và một nửa tuyết! Làm thế nào bạn sẽ nghèo Seattleites sống sót như một cơn ác mộng như vậy!?! Chà, chúng ta có thể nói chuyện cho mọi người trong khu vực Puget Sound. Tuy nhiên, chúng tôi có thể nói với bạn rằng anh chàng kịch bản viết chuyên mục này có kế hoạch sống sót sau cơn ác mộng bằng cách thư giãn quanh nhà, ăn bánh rán, uống cà phê và xem nhiều TV.

Ồ, và, uh làm việc từ nhà.

Ghi chú. Điều này có nghĩa là anh chàng kịch bản viết chuyên mục này là một weenie tuyết? Có lẽ. Nhưng, sau đó, một lần nữa, anh ấy cũng ngồi ở nhà trong cặp quần thể thao và áo len trong khi bạn không phải là Snow Weenies đều mặc quần áo và chăm chỉ làm việc.. Does this mean that the Scripting Guy who writes this column is a snow weenie? Maybe. But, then again, he’s also sitting at home in pair of sweatpants and a sweatshirt while you non-snow weenies are all dressed up and hard at work.

Nghĩ về nó.

Theo tín dụng của mình, anh chàng kịch bản viết cột này ban đầu đã lên kế hoạch cố gắng làm cho nó hoạt động sáng nay. Tuy nhiên, khi anh đang xem tuyết rơi, anh nhận thấy hàng xóm của mình cố gắng lái xe lên đồi. Một lúc sau, anh theo dõi khi cùng một người hàng xóm đi xuống đồi. Người hàng xóm đã thử lại; Chưa đầy một phút sau, anh đang lùi bước vào đường lái xe. Sau khi người hàng xóm, thứ ba không thành công, hãy thử đàm phán về ngọn đồi, anh chàng kịch bản viết chuyên mục này đã nói với chính mình, tôi nghĩ rằng tôi sẽ có một chiếc bánh rán khác.

Và sau đó, sau đó, anh quyết định làm việc tại nhà hôm nay.

Dù sao, ngay bây giờ, nó lại có tuyết rơi [mặc dù âm thanh trên sân thượng cho thấy rằng có thể có rất ít mưa trộn lẫn] và điều duy nhất trên TV là một chương trình trò chơi 30 tuổi được hiển thị trên mạng trò chơi. Điều đó có nghĩa là chúng ta cũng có thể mất vài phút để xem liệu chúng ta có thể viết một tập lệnh có thể thay đổi màu nền của một ô dựa trên một loạt các giá trị hay không.

Vâng, làm thế nào về điều đó? Hóa ra chúng ta có thể viết một tập lệnh như vậy:

Set objExcel = CreateObject["Excel.Application"]
objExcel.Visible = True

Set objWorkbook = objExcel.Workbooks.Open["C:\Scripts\Test.xls"]
Set objWorksheet = objWorkbook.Worksheets[1]

Set objRange = objWorksheet.UsedRange

For Each objCell in objRange
    If IsNumeric[objCell.Value] Then
       
        If objCell.Value < 20 Then
            objCell.Interior.ColorIndex = 3
        ElseIf objCell.Value < 40 Then
            objCell.Interior.ColorIndex = 6
        ElseIf objCell.Value < 60 Then
            objCell.Interior.ColorIndex = 45
        End If
    End If
Next

Như bạn có thể thấy, đây thực sự là một kịch bản nhỏ khá dễ dàng để đưa ra. Chúng tôi bắt đầu mọi thứ bằng cách tạo một thể hiện của đối tượng excel. người áp dụng và đặt thuộc tính có thể nhìn thấy thành đúng; Điều đó cho chúng ta một phiên bản đang chạy của Microsoft Excel mà chúng ta có thể thấy trên màn hình. Sau đó, chúng tôi sử dụng hai dòng mã này để mở tệp c: \ scripts \ test.xls và liên kết với bảng tính đầu tiên trong tệp đó:Excel.Application object and set
the Visible property to True; that gives us a running instance of Microsoft Excel that we can see on screen. We then use these two lines of code to open
the file C:\Scripts\Test.xls and bind to the first worksheet in that file:

Set objWorkbook = objExcel.Workbooks.Open["C:\Scripts\Test.xls"]
Set objWorksheet = objWorkbook.Worksheets[1]

Tại thời điểm này, chúng tôi đã sẵn sàng để có một số niềm vui thực sự!

Ồ, đúng: Chúng ta phải hoàn thành cột hôm nay, trước tiên, chúng ta có phải không? OK, hãy để kết thúc cột hôm nay cột trước. Sau đó, chúng tôi sẽ sẵn sàng để có một số niềm vui thực sự!

Ồ, phải: Trò chơi kịch bản mùa đông 2008 không bắt đầu cho đến ngày 15 tháng 2. OK, hãy để kết thúc cột hôm nay, và sau đó ngồi khoảng ngày 15 tháng 2. Và sau đó chúng tôi sẽ sẵn sàng để có một số niềm vui thực sự!2008 Winter Scripting Games don’t start until February 15th. OK, let’s finish today’s column, and then sit around until February 15th. And
then we’ll be ready to have some real fun!

Trong khi đó, chúng tôi sử dụng dòng mã này để tạo một thể hiện đối tượng phạm vi Excel, một phạm vi bao gồm tất cả các ô trong bảng tính có chứa dữ liệu. [Do đó tên đã sử dụng.]:Range object, a range that encompasses all the cells in the spreadsheet that contain
data. [Hence the name UsedRange.]:

Set objRange = objWorksheet.UsedRange

Tại sao chúng ta muốn một bộ sưu tập tất cả các ô trong bảng tính có chứa dữ liệu? Bạn đã nhận được nó: Điều đó làm cho nó rất dễ dàng để lặp qua tất cả các ô và, nếu giá trị của một tế bào đảm bảo, hãy thay đổi màu nền.
value of a cell warrants, change the background color.

Để làm điều đó, chúng tôi bắt đầu bằng cách thiết lập A cho mỗi vòng lặp để lặp qua tất cả các mục trong phạm vi [nghĩa là tất cả các ô trong bảng tính]. Bên trong vòng lặp đó, chúng tôi sử dụng hàm isnumeric để xem giá trị của ô thậm chí là một số trong & nbsp; vị trí đầu tiên. Nếu đúng như vậy, sau đó chúng tôi sử dụng khối mã này để xác định giá trị chính xác và để xem liệu giá trị có rơi vào bất kỳ phạm vi nào được chỉ định của chúng tôi không:
the IsNumeric function to see if the Value of the cell is even a number in the first place. If it is, we then use this block of code to determine the exact value,
and to see if the value falls in any of our specified ranges:

If objCell.Value < 20 Then
    objCell.Interior.ColorIndex = 3
ElseIf objCell.Value < 40 Then
    objCell.Interior.ColorIndex = 6
ElseIf objCell.Value < 60 Then
    objCell.Interior.ColorIndex = 45
End If

Như bạn có thể thấy, trong dòng 1, chúng tôi kiểm tra xem giá trị của ô nhỏ hơn 20. Nếu có, chúng tôi sau đó sử dụng dòng mã này để đặt màu nền của ô thành màu đỏ:
red:

objCell.Interior.ColorIndex = 3

Ghi chú. Làm thế nào chúng ta biết rằng việc thiết lập thuộc tính bên trong.ColorIndex thành 3 sẽ thay đổi màu nền của ô thành màu đỏ? Chà, bạn có thể nói rằng một con chim nhỏ nói với chúng tôi.. How did we know that setting the Interior.ColorIndex property to 3 would change the background color of the cell to red? Well, you might say that
a little birdie told us.

Tốt; Trên thực tế, Birdie nhỏ đó bảo chúng tôi đọc bài viết không gian văn phòng thay đổi màu nền của một ô. Dù bằng cách nào, mặc dù, màu nền được thay đổi thành màu đỏ.Changing the Background Color of a Cell. Either way, though, the background
color gets changed to red.

Giả sử rằng giá trị của ô nhỏ hơn 20. Trong trường hợp đó, màu nền của ô được thay đổi thành màu đỏ và chúng ta tự động thoát khỏi khối nếu sau đó chặn; Ngay khi VBScript gặp một điều kiện thực sự, nó thoát ra khỏi câu lệnh IF sau đó. Bây giờ, điều gì sẽ xảy ra nếu giá trị không dưới 20? Vâng, trong trường hợp đó, chúng tôi kiểm tra điều kiện tiếp theo: Giá trị nhỏ hơn 40? Nếu có, thì chúng ta thay đổi màu nền thành màu vàng [6]. Nếu nó không, thì chúng tôi kiểm tra điều kiện cuối cùng của chúng tôi: giá trị có dưới 60 không? Nếu có, chúng ta thay đổi màu nền thành màu cam [45]; Nếu nó không, chúng ta sẽ để lại màu tế bào như-IS. Bất kể, sau đó chúng tôi sẽ quay trở lại đỉnh của vòng lặp và lặp lại quy trình với ô tiếp theo trong bảng tính.
block; as soon as VBScript encounters a true condition it exits an If Then statement. Now, what if the value isn’t less than 20? Well, in that case we check
the next condition: is the Value less than 40? If it is, then we change the background color to yellow [6]. If it’s not, then we check our final condition: is the Value
less than 60? If it is, we change the background color to orange [45]; if it’s not, we leave the cell color as-is. Regardless, we then zip back to the top of the
loop and repeat the process with the next cell in the spreadsheet.

Khi tất cả được nói và xong, chúng ta nên có một bảng tính trông như thế này:

Đẹp, nhưng chức năng. Giống như những người viết kịch bản.

Điều đó nên làm điều đó, Esw. Đối với anh chàng kịch bản viết chuyên mục này, anh ta có một ngày bận rộn phía trước. Ví dụ, anh ta nên làm cho mình một chiếc bánh sandwich phô mai nướng cho bữa trưa, hay anh ta nên đi bộ đến Nữ hoàng sữa và lấy một chiếc bánh hamburger? Cậu bé, làm việc ở nhà đang chứng tỏ là khó khăn hơn nhiều so với anh ta nghĩ.
cheese sandwich for lunch, or should he walk over to Dairy Queen and get a hamburger? Boy, working at home is proving to be much harder than he thought
it would be.

Bài Viết Liên Quan

Chủ Đề