- 締切済み
A列からH列に何らかの文字が入っているので、5個目されているセルを探し
A列からH列に何らかの文字が入っているので、5個目されているセルを探して、 その日付(1行目)を結果としてI列に表示したいです。 MATCH関数を使用してみたのですが、うまくいきません。 何かいい関数はありますでしょうか。よろしくお願いいたします。 ※office2007を使っています。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#6です。 配列数式というものになるが 例データ - 8月1日 8月2日 8月3日 8月4日 8月5日 8月6日 8月7日 8月8日 2010/8/5 a a - a a a a 2010/8/5 a b b b - b 2010/8/5 a a a a a a a 2010/8/5 a - a a a - a A2の式は =INDEX($B$1:$I$1,SMALL(IF(B2:I2<>"",COLUMN(B2:I2),""),5)-1) と入れて、SHIFT,CTRL、ENTERの3つのキーを同時押しする。 A2の式を下方向に複写する。 A列の書式は日付に設定すること。
- imogasi
- ベストアンサー率27% (4737/17069)
こういうタイプの問題(何処に5番目があるか浮動的な問題)は関数では苦手。 作業列を使うか、技巧的な難しい式を使わないとならない。 ーーー ユーザー関数をVBAで作ると 例データ -は空白セルを示す 原データはB-I列(質問例を変えた) ー 8月1日 8月2日 8月3日 8月4日 8月5日 8月6日 8月7日 8月8日 ー a 2010/8/6 a a a ー a a 2010/8/7 a ー a a ー a a 2010/8/5 a a a a a ー a ー a a a 2010/8/6ー ー a a a a a 2010/8/5 a a a a a a a ーー A2の式 =IF(banme(A2)=0,"",INDEX($B$1:$H$1,1,banme(A2))) banme(A2)の部分がユーザー定義関数。データが5個以内のときは0を返すようにしている。 A列で式を縦方向に複写 -- ユーザー関数は 標準モジュールに Function banme(a) n = 0 For i = 2 To 8 If Cells(a.Row, i) <> "" Then n = n + 1 If n = 5 Then banme = i - 1 GoTo ext End If End If Next i banme = 0 ext: End Function
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えば1行目で日付のセルがC1セルからI1セルまであるとします。 そこで作業列としてL1セルには =C1 の式を入力してR1セルまでオートフィルドラッグします。 L2セルには次の式を入力してR2セルまでオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF($A2="","",COUNTIF($C2:C2,"*?")) その後にB2セルには次の式を入力して下方向にオートフィルドラッグします。 =IF(A2="","",IF(MAX(L2:R2)>=5,INDEX(L$1:R$1,MATCH(5,L2:R2,0)),"")) B列のセルの書式設定から表示形式で日付を選べばよいでしょう。 なお、L列から横の列が目障りでしたらそれらの列を選んで右クリックし「非表示」にすればよいでしょう。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元の表が表示されているワークシートをSheet1と仮定して、Sheet2を作業用シートとして使用するものとします。 まずは、Sheet2のC2セルに次の数式を入力して下さい。 =IF(Sheet1!C2="","",COUNT($B2:B2)+1) 次に、Sheet2のC2セルをコピーして、Sheet2のC2~I4の範囲に貼り付けて下さい。 次に、Sheet1のB2セルに次の数式を入力して下さい。 =IF(MAX(Sheet2!2:2<5,"",INDEX($1:$1,MATCH(5,Sheet2!2:2))) 次に、Sheet1のB2セルをコピーして、Sheet1のB3セルとB4セルに貼り付けて下さい。 以上で完成です。
- maron--5
- ベストアンサー率36% (321/877)
外国人の方でしょうか、日本語が大変お上手ですが、一部に頓珍漢な表現があります。 複数のシートを利用する方法をご紹介しておきます。 Sheet1 にお示しのデータがあるものとします。 1.Sheet2 のセル C2 に式 =Sheet1!C2<>"" を入力して、此れを右方 に(セル I2 まで)ズズーッとドラッグ&ペースト 2.Sheet2 の範囲 C2:I2 を下方にズズーッとドラッグ&ペースト 3.Sheet3 のセル C2 に式 =COUNTIF(Sheet2!$C2:C2,TRUE) を入力 して、此れを右方に(セル I2 まで)ズズーッとドラッグ&ペースト 4.Sheet3 の範囲 C2:I2 を下方にズズーッとドラッグ&ペースト 5.Sheet1 のセル B2 に次式を入力して、此れを下方にズズーッとドラ ッグ&ペースト =IF(ISERROR(MATCH(5,Sheet3!C2:I2,0)),"",INDEX(C$1:I$1,MATCH(5,Sheet3!C2:I2,0)))
- prius770c
- ベストアンサー率35% (91/258)
う~ん、日本語が分からないです・・・すいません。 >5個目されているセルを探して、 これは誤変換でしょうか? >その日付(1行目)を結果としてI列に表示したいです。 I列は8/7日ですがB列の誤りですか? 良く分かりませんが、進捗度を管理する帳票である進捗度以上でかつ最新日付をB列に表示したとか そんな感じですかね?