エクセル の学校
8.一覧 9.HOME
1.Top 2.Last

[[20240423144738]]

[ 初めての方へ | 一覧(最新更新順) |

|
| 全文検索 | 過去ログ | エクセルの学校HOME ]

 

『抽出したデータを並べて文章をつくりたい』(ぽむ)

元データ

     Aさん  Bさん  Cさん  Dさん
R1年   87    77     42     78 
R2年   55    32     90     40  
R3年   59    22     15     30 

基準値 50

こういったデータから、関数で下記のような文章を作成したいのですが、 どういった関数で組み立てることができるでしょうか。

・R1年では、Aさん、Bさん、Dさんが基準値以上となり、Cさんが基準値以下となった。 ・R2年では、Aさん、Cさんが基準値以上となり、Bさん、Dさんが基準値以下となった。 ・R3年では、Aさんが基準値以上となり、Bさん、Cさん、Dさんが基準値以下となった。

< 使用 Excel:Excel2019、使用 OS:Windows10 >


 基準値以上は基準値を含む。
 基準値以下も基準値を含む。
 ちょうど基準値ちょうどの人は両方に表示させるのだろうか?
(ねむねむ) 2024/04/23(火) 15:27:29

 あとどちらかが一人もいない場合にはどう表示させるのだろうか?
(ねむねむ) 2024/04/23(火) 15:32:58

すみません、誤っておりました。 基準値以下→基準値未満 です。

どちらかが一人もいない場合は、 R○年では、全ての人が基準値以上(未満)となった。 という表示にしたいです。

(ぽむ) 2024/04/23(火) 15:46:22


    A      B        C        D        E       F     G
 1      Aさん  Bさん  Cさん  Dさん         50
 2 R1年   87    77     42     78 
 3 R2年   55    32     90     40  
 4 R3年   59    22     15     30 
 のようなレイアウトだとして。
 =A2&"では"&IF(OR(COUNTIF(B2:E2,"<"&G$1)=0,COUNTIF(B2:E2,">="&G$1)=0),"すべての人が基準値"&IF(COUNTIF(B2:E2,"<"&G$1),"未満","以上")&"となった。",TEXTJOIN("、",TRUE,IF(B2:E2>=G$1,B$1:E$1,""))&"が基準値以上となり、"&TEXTJOIN("、",TRUE,IF(B2:E2<G$1,B$1:E$1,""))&"が基準値未満となった。")
 と入力して下へフィルコピーではどうだろうか?

 ただ、現在2016でしか確認できないため確実に上記でOKというチェックができていないためダメだったらすまない。
(ねむねむ) 2024/04/23(火) 16:24:05

>ねむねむさん

試してみた結果、成功しました。 ご教授ありがとうございます。感謝いたします。

(ぽむ) 2024/04/23(火) 16:30:09


 解決済みですが、せっかく作ったので置いておきます。

   A     B     C     D     E     
 1       Aさん Bさん Cさん Dさん
 2 R1年  87    77    42    78
 3 R2年  55    32    90    40
 4 R3年  49    22    15    30
 5
 6 基準値 50			

 上記のレイアウトで結果はG列に出力

 Sub Sample()
    Const Msg1 = _
    "・Y年では、Upperが基準値以上となり、Lowerが基準値未満となった。"
    Const Msg2 = _
    "・Y年では、全員が基準値UpDownとなった。"

    Dim dat As Range
    Set dat = Cells(1).CurrentRegion
    Set dat = Intersect(dat, dat.Offset(1, 1))
    Dim ref As Long
    ref = Range("B6").Value

    Dim Upper As String, Lower As String
    Dim res As String
    Dim r As Range, c As Range
    For Each r In dat.Rows
        Upper = "": Lower = ""
        For Each c In r.Cells
            If c.Value >= ref Then
                Upper = Upper & "、" & Cells(1, c.Column).Value
            Else
                Lower = Lower & "、" & Cells(1, c.Column).Value
            End If
            If Upper = "" Then
                res = Replace(Replace(Msg2, "Y年", Cells(c.Row, 1).Value), "UpDown", "未満")
            ElseIf Lower = "" Then
                res = Replace(Replace(Msg2, "Y年", Cells(c.Row, 1).Value), "UpDown", "以上")
            Else
                res = Replace(Msg1, "Y年", Cells(c.Row, 1).Value)
                res = Replace(res, "Upper", Mid(Upper, 2))
                res = Replace(res, "Lower", Mid(Lower, 2))
            End If
        Next
        Cells(r.Row, "G") = res
    Next
 End Sub
(hatena) 2024/04/23(火) 16:36:37




[ 一覧(最新更新順) |

]

キーボードヒント:[Home]または[Fn+Home]キーで一番上へ戻ります

YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.