0

以下のようなテーブルがあります。Excelで、4番目の列に同じ番号のグループの周囲に境界線を配置して、グループの周囲に境界線を設定するにはどうすればよいですか。条件付き書式でそれができると思っていましたが、どうすればいいのかわかりません。ですから、唯一の選択肢はマクロだと思います。誰か助けてもらえますか?

 1 64436 549419 1  
 2 64437 549420 1  
 3 64438 549421 1  
 4 64439 549422 1  
 5 64440 549423 1  
 6 64441 549424 1  
 7 64442 549425 1  
 8 64443 549426 1  
 9 64444 549427 1  
 10 64445 549428 1  
 11 64446 549429 1  
 12 64447 549430 1  
 13 64448 549431 2  
 14 64449 549432 2  
 15 64450 549433 2  
 16 64451 549434 2  
 17 64452 549435 2  
 18 64453 549436 2  
 19 64454 549437 2  
 20 64455 549438 2  
 21 64456 549439 2  
 22 64457 549440 4  
 23 64458 549441 4  
 24 64459 549442 5  
 25 64460 549443 5  
 26 64461 549444 5  
 27 64462 549445 5  
 28 64463 549446 5  
 29 64464 549447 5  
 30 64465 549448 6  
 31 64466 549449 6  
 32 64467 549450 6  
 33 64468 549451 6  
 34 64469 549452 6  
 35 64470 549453 6  
 36 64471 549454 6  
 37 64472 549455 9  
 38 64473 549456 9  
 39 64474 549457 9  
4

4 に答える 4

2

相対参照を使用する必要があります。

  1. 条件付き書式を適用する列範囲を選択します。
  2. 次の 3 つの式をそれぞれの条件に入力します。
    • =AND($C2=$C3,$C3=$C4)
      • こちらはミドルアイテム用。(両サイドにフチあり)
    • =AND($C2<>$C3,$C3=$C4)
      • これはグループの最初のものです。(左、上、右の境界線)
    • =AND($C2=$C3,$C3<>$C4)
      • これはグループの最後のものです。(左、下、右の境界線)
  3. 必要に応じてフォーマットします。

すべての「$C」を「${Your Column}」に置き換えます。選択項目には 3 つの条件付き書式設定条件を含めることができないため、これにより単一の項目の周りに境界線が配置されないことに注意してください。

于 2010-06-04T20:31:31.360 に答える
1

まさに必要なものに対する単純な非マクロ ソリューションは見当たりませんが、PowerUser のソリューションは問題ないようです。

これは、最終列に同じ数字を持つ行の周りに境界線を配置するマクロベースのソリューションです。データが列 A:D にあると仮定します。

このマクロを使用するには、リスト内の任意のセルをクリックしてからマクロを起動します。

クイックガイドとして:

  • AddBorders最後の列のすべてのセルを単純にループし、境界線が適切な場合に機能するメイン マクロです。
  • AddBorderボーダーを追加する短いルーチンです。
  • おまけとして、AddBorderExcel の 56 色のカラー パレットからランダムな色を選択して、見やすくするためにそれぞれの境界線が異なる色になるようにします

    Sub AddBorders()
        Dim startRow As Integer
        Dim iRow As Integer
        startRow = 1    
        For iRow = 2 To ActiveCell.CurrentRegion.Rows.Count    
            If WorksheetFunction.IsNumber(Cells(iRow + 1, 4)) Then
                If Cells(iRow, 4) <> Cells(iRow - 1, 4) Then
                   AddBorder startRow, iRow - 1
                   startRow = iRow
                End If
            Else
                   AddBorder startRow, iRow
            End If   
        Next iRow    
    End Sub
    
    Sub AddBorder(startRow As Integer, endRow As Integer)
        Dim borderRange As Range
        Dim randomColor As Integer
        randomColor = Int((56 * Rnd) + 1)
        Set borderRange = Range("A" & startRow & ":D" & endRow)
        borderRange.BorderAround ColorIndex:=randomColor, Weight:=xlThick    
    End Sub
    
于 2010-06-05T08:43:09.053 に答える
0

人間の目に読みやすくしようとしているだけですか?もしそうなら、私は背景色を交互にすることをお勧めします。たとえば、その4番目の列の数字が変わるたびに、背景色が白から青に、またはその逆に変わります。私はいつもこれをします:

  1. 追加の列Eを作成します。参照列はDなので、次のように入力します。
    = MOD(IF(D5 <> D4、E4 + 1、E4)、2)
    (つまり、この行の列Dが最後の行のDと異なる場合は、 0から1または1から0のいずれかに変更します)

  2. エンドユーザーに表示されないように、列を非表示にします。

  3. 2つの条件式を作成します。1つ目は、非表示の値が0の場合に行の色を白に変更し、2つ目は、非表示の値が1の場合に行の色を青に変更します。

マクロはありません。VBAコーディングはありません。1つの非表示列といくつかの条件式。また、列Dが数字をスキップしている場合でも、色は適切に交互に表示されるはずです:)

(私はこれをXL 2003で毎日使用しています。2007年に機能することを願っています)

于 2010-06-04T21:24:50.510 に答える
0

私はこの解決策を思いついたのですが、私の Excel 2010 ではうまく動作しません:/ 2003 ではテストできません。よろしければ教えてください。

Sub PaintBorder()
Dim iRow As Integer
iRow = 1
Dim strTemp As String
strTemp = Range("D" & iRow).Value
Dim strPrev As String

Dim sectionStart As Integer
sectionStart = 1

Do
    strPrev = strTemp
    strTemp = Range("D" & iRow).Value

    If strPrev <> strTemp Then
        ActiveSheet.Range(Cells(sectionStart, 1), Cells(iRow - 1, 4)).BorderAround xlSolid, xlMedium, xlColorIndexAutomatic
        sectionStart = iRow
    End If
    iRow = iRow + 1
Loop Until strTemp = vbNullString
End Sub
于 2010-06-04T20:41:01.523 に答える