よねさんのWordとExcelの小部屋 なんでも掲示板

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

ツリー一括表示

Nomal NO TITLE /japanokwave (23/07/09(Sun) 12:00) #13599
Nomal Re[1]: NO TITLE /よねさん (23/07/10(Mon) 08:07) #13600
│└Nomal Re[2]: NO TITLE /japanokwave (23/07/10(Mon) 21:52) #13601
Nomal Re[1]: NO TITLE /japanokwave (23/07/15(Sat) 14:43) #13602
  └Nomal Re[2]: NO TITLE /よねさん (23/07/16(Sun) 08:57) #13603
    └Nomal Re[3]: NO TITLE /japanokwave (23/07/17(Mon) 22:57) #13604


親記事 / ▼[ 13600 ] ▼[ 13602 ]
■13599 / 親階層)  NO TITLE
□投稿者/ japanokwave -(2023/07/09(Sun) 12:00:11)
    okwaveに
    「スプレッドシートの検索と抽出」という表題で出しました。
    スプレッドシートとエクセルの共通点もあるので、どうかなと思いまして
[ □ Tree ] 返信/引用返信 削除キー/

▲[ 13599 ] / ▼[ 13601 ]
■13600 / 1階層)  Re[1]: NO TITLE
□投稿者/ よねさん -(2023/07/10(Mon) 08:07:10)
    2023/07/10(Mon) 13:32:04 編集(投稿者) 2023/07/10(Mon) 13:27:13 編集(投稿者)
    okwebで質問を探したところ
    https://okwave.jp/qa/q10155169.html
    のようですね。
    
    漢字のリストが$E$2:$T$11の1,4,7,10,13,16列にあり、
    数字のリストが$C$2:$R$11の1,4,7,10,13,16列にある場合、
    各列を一列に並べ、INDEXとMATCHで検索する力技です。
    列数が多くなったりすると数式が長くなり面倒ですができないことはないという程度でご覧ください。
    
    VBAが使えるならそっちの方が楽だとおもいます。
    
    =INDEX(VSTACK(CHOOSECOLS($C$2:$R$11,1),CHOOSECOLS($C$2:$R$11,4),CHOOSECOLS($C$2:$R$11,7),CHOOSECOLS($C$2:$R$11,10),
    CHOOSECOLS($C$2:$R$11,13),CHOOSECOLS($C$2:$R$11,16)),
    MATCH(A1,VSTACK(CHOOSECOLS($E$2:$T$11,1),CHOOSECOLS($E$2:$T$11,4),CHOOSECOLS($E$2:$T$11,7),CHOOSECOLS($E$2:$T$11,10),
    CHOOSECOLS($E$2:$T$11,13),CHOOSECOLS($E$2:$T$11,16)),0))
    
    (追加)
    VBAが楽と書いたので、コードを書いてみました。
    データの範囲は C2:T11です。
    なお、A列に探す文字があって、B列に値を返します。
    
    Sub test()
    Dim myData As Variant
    Dim i As Long, j As Long, k As Long
    
    myData = Range("C2:T11").Value
    
        For i = LBound(myData) To UBound(myData)
            For j = 3 To 18 Step 3
            For k = 1 To 17
                If myData(i, j) = Cells(k, 1).Value Then
                    Cells(k, 2).Value = myData(i, j - 2)
                    Exit For
                End If
            Next k
            Next j
        Next i
    End Sub
    

[ 親 13599 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13600 ] / 返信無し
■13601 / 2階層)  Re[2]: NO TITLE
□投稿者/ japanokwave -(2023/07/10(Mon) 21:52:26)
    早速考えていただきありがとうございます。
    勉強して解釈できるようにがんばります。
    新しい関数待ちという感じですね。
    「範囲を検索し、縦横の番地を出してその2マス左隣」という関数が開発されれば良いなあ。
    先ずはお礼まで
[ 親 13599 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13599 ] / ▼[ 13603 ]
■13602 / 1階層)  Re[1]: NO TITLE
□投稿者/ japanokwave -(2023/07/15(Sat) 14:43:10)
    今現在の報告です。

    =FILTER(FLATTEN('sheet'!A3:AY25),FLATTEN('sheet'!A3:AY25)<>"")
    で作業シートをつくり、列に変換しないとダメみたいですね。
    その後に
    =INDEX('シート2'!A:A,MATCH(C2,'シート2'!A:A,0)-1,1)をはじめの目的セルに打ち込む。
    と近況報告でした。
[ 親 13599 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13602 ] / ▼[ 13604 ]
■13603 / 2階層)  Re[2]: NO TITLE
□投稿者/ よねさん -(2023/07/16(Sun) 08:57:29)
    別のシートから探し出すというのを無視していますがご勘弁ください。
    データの範囲は C2:T11で、A列に探す文字があって、B列に値を返します。
    
    新しい関数を使わないということなら、従来の関数でも可能です。
    ただし、私はExcelの場合ならわかりますが、スプレッドシートのことは全く知りませんのでご了解願います。
    
    検索する文字が列に有るか無いかをMatch関数で調べ、
    有ったら2つ左の列から一致する行の値をIndex関数で取り出す。
    列に無かったら、次の列を探す・・・といったことを列の数だけ繰り返せばできます。
    
    
    =IF(NOT(ISNA(MATCH(A1,$E$2:$E$11,0))),INDEX($C$2:$C$11,MATCH(A1,$E$2:$E$11,0)),
    IF(NOT(ISNA(MATCH(A1,$H$2:$H$11,0))),INDEX($F$2:$F$11,MATCH(A1,$H$2:$H$11,0)),
    IF(NOT(ISNA(MATCH(A1,$K$2:$K$11,0))),INDEX($I$2:$I$11,MATCH(A1,$K$2:$K$11,0)),
    IF(NOT(ISNA(MATCH(A1,$N$2:$N$11,0))),INDEX($L$2:$L$11,MATCH(A1,$N$2:$N$11,0)),
    IF(NOT(ISNA(MATCH(A1,$Q$2:$Q$11,0))),INDEX($O$2:$O$11,MATCH(A1,$Q$2:$Q$11,0)),
    IF(NOT(ISNA(MATCH(A1,$T$2:$T$11,0))),INDEX($R$2:$R$11,MATCH(A1,$T$2:$T$11,0))))))))
    
    

[ 親 13599 / □ Tree ] 返信/引用返信 削除キー/

▲[ 13603 ] / 返信無し
■13604 / 3階層)  Re[3]: NO TITLE
□投稿者/ japanokwave -(2023/07/17(Mon) 22:57:06)
    なるほど、IFでつなげて、一列ずつ検索を掛ける訳ですね。
    わざわざ時間を割いてくださりありがとうございました。
    今後ともどうぞよろしくお願いします。
[ 親 13599 / □ Tree ] 返信/引用返信 削除キー/


Pass/

HOME HELP 新規作成 新着記事 ツリー表示 トピック表示 検索 過去ログ

- Child Tree -