• 締切済み

A列からH列に何らかの文字が入っているので、5個目されているセルを探し

A列からH列に何らかの文字が入っているので、5個目されているセルを探して、 その日付(1行目)を結果としてI列に表示したいです。 MATCH関数を使用してみたのですが、うまくいきません。 何かいい関数はありますでしょうか。よろしくお願いいたします。 ※office2007を使っています。

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

#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)
回答No.6

こういうタイプの問題(何処に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)
回答No.5

例えば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)
回答No.4

 今仮に、元の表が表示されているワークシートを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)
回答No.3

B1=IF(COUNTA(C2:T2)<5,"",INDEX($A$1:$T$1,SMALL(INDEX((C2:T2="")*10^5+COLUMN(C2:T2),),5))) ★下にコピー ◆式の中の範囲は実際に合わせて変更してください

noname#204879
noname#204879
回答No.2

外国人の方でしょうか、日本語が大変お上手ですが、一部に頓珍漢な表現があります。 複数のシートを利用する方法をご紹介しておきます。 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)
回答No.1

う~ん、日本語が分からないです・・・すいません。 >5個目されているセルを探して、 これは誤変換でしょうか? >その日付(1行目)を結果としてI列に表示したいです。 I列は8/7日ですがB列の誤りですか? 良く分かりませんが、進捗度を管理する帳票である進捗度以上でかつ最新日付をB列に表示したとか そんな感じですかね?

関連するQ&A