『範囲内に入力が「有る」セルだけ、別の指定セルに「順番に」転記する方法』(gag)
よろしくお願い致します。
下記に示すような表が有って
B列には大項目が6行ずつ入力されています。
N列は空白行も存在し、2行セットで検査が示されています。
欲しいのは、N列で検査が入力されていれば、同じN列の
70行以降で15行おきに表の様に「自動で」転記したいのです。
良い方法を教えてください。
※ 最初のデータに当たるN列はB列の種類の示す業の中でランダム
にデータが並びます。
よろしくお願い致します。
B N
・ ・ ・ ・ 11 AA | ・・ | あああ | 12 AA | ・・ | 検査?@ | 13 AA | ・・ | | 14 AA | ・・ | | 15 AA | ・・ | ううう | 16 AA | ・・ | 検査?D | ・ ・ ・ ・ 29 | ・・ | | 30 CC | ・・ | いいい | 31 CC | ・・ | 検査?B | 32 | ・・ | | ⇩ ⇩ ⇩ ⇩ ⇩ ⇩ ⇩ ⇩ 70 | ・・ | AA | 71 | ・・ | あああ | 62 | ・・ | 検査?@ | ・ ・ ・ ・ 86 | ・・ | AA | 87 | ・・ | ううう | 88 | ・・ | 検査?D | ・ ・ ・ ・ 90 | ・・ | CC | 91 | ・・ | いいい | 92 | ・・ | 検査?B |
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
もっとよい方法がありそうですが、ひとまず =TOCOL(DROP(HSTACK(WRAPROWS(FILTER(B1:B21,N1:N21<>""),2),WRAPROWS( FILTER(N1:N21,N1:N21<>""),2)),,1)) (´・ω・`) 2025/05/07(水) 13:05:59
15行おきに、というところを追加するとすれば以下のようなことですか?(12じゃなく13かも) ´・ω・`さんの式を全面的に拝借しましたw。
=LET( rngB,B1:B69, rngN,N1:N69, a,WRAPROWS(FILTER(rngB,rngN<>""),2), b,WRAPROWS(FILTER(rngN,rngN<>""),2), c,MAKEARRAY(ROWS(a),12,LAMBDA(r,c,"")), TOCOL(DROP(HSTACK(a,b,c),,1)) ) (xyz) 2025/05/07(水) 14:40:10
Const COL1 As String = "B" Const COL2 As String = "N" Dim dRng As Range Dim iRow As Long Set dRng = Cells(70, COL2) For iRow = 2 To Cells(Rows.Count, COL2).End(xlUp).Row If .Value Like "検査*" Then dRng.Value = Cells(iRow, COL1).Value dRng.Offset(1, 0).Value = Cells(iRow, COL2).Offset(-1, 0).Value dRng.Offset(2, 0).Value = Cells(iRow, COL2).Value End If Set dRng = dRng.Offset(15) Next
例示の出力先が70,86,90となっていてこのコードでは期待通りの出力になりませんがいちおう
(さわ子) 2025/05/07(水) 15:28:30
お手数をお掛けしますが、もう一度御教授下さい。
よろしくお願いいたします。
(gag) 2025/05/07(水) 17:38:01
70行 =LAMBDA(r, LET( c,N1:N69<>"", n,FILTER(N1:N69,c), b,FILTER(B1:B69,c), l,DROP(HSTACK(WRAPROWS(b,2),WRAPROWS(n,2)),,1), IFERROR(TOCOL(CHOOSEROWS(l,r)),"") ) )(1) 以下、15行毎に 最後の(1)を(2),(3) ... (´・ω・`) 2025/05/08(木) 09:14:51
(もう昼前) 2025/05/08(木) 11:12:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.