エクセルで下記のような表があります。
大きさは 列がAからDB  行は300 です。
数字の1が入ってるところに同じ行の2行目のセルにある文字(みかん・・・)を入れたいのですが、
置換だとあまりに列が多く大変なので
≪1が入力されているセルは、同じ行の2行目の文字と置き換える≫という
計算式を入れたいと思います。
あるいは簡単な方法をご教示いただけますでしょうか。
よろしくお願いいたします。

   みかん リンゴ バナナ
①    1     1 
②    
③    1    1  1
④     1    1
⑤   1

このQ&Aに関連する最新のQ&A

A 回答 (4件)

みかん・リンゴ・バナナ とあるのが2行目で、


1が表示されているセルには、同じ"列"の2行目のデータを表示したいということでしょうか?

別のシートなり同じシートの別の場所なりに表示させる事は可能ですよ。

シート1に
    B2:みかん C2:リンゴ D2:バナナ
A3:① B3:1         D3:1
A4:②
A5:③ B5:1    C5:1   D5:1
A6:④ B6:1    C6:1
A7:⑤ B7:1
とあるとします。

シート2にA列と2行目はそのままの表示(コピーでも=で表示させてもかまいません)とし、
B3に
=IF(シート1!B3="","",B$2)
と入力し、必要なだけ(この場合D7まで)コピーします。
空白と1しかないとしての式ですが、1以外もあるのでしたら、その場合何を表示させるか(あるいは空白か)によって式が変わります。
現在の式では、シート1の同じ位置のセルが空白なら空白を、そうでなければ2行目のデータを表示させる。
という内容になっています。
    • good
    • 1
この回答へのお礼

携帯からのやり方が分からず、お礼が遅れまして申し訳ございません。

ありがとうございました<(_ _)>   一瞬でできました‼
また、この別シートに ”=” で表示させると、シート1.2が連動するので
シート1で更新されたデータが自動的にシート2でも更新され、感激です。
お陰様で、シート両方のデータ形式をそれぞれで活用することができるようになりました。
素晴らしいです。

もう諦めていたのですが、夜遅くにお疲れのところ、ご対応いただき、
本当にありがとうございました。

お礼日時:2017/04/19 08:45

> 書き換えることはできないのですね。



結果がどうなるか、問題を提起しただけでは、その質問内容では人は理解できないからです。もう少し、全体を把握できるように説明してもらいたいです。

   みかん  リンゴ  バナナ
①   1    1   
②   
③   1    1    1
④   1    1
⑤   1    
   ↓

★結果?

   みかん  リンゴ  バナナ
①   1    1   
②   
③  みかん  リンゴ  バナナ  
④  みかん  リンゴ
⑤  みかん   

いずれにしても、VBAの処理にはなります。
    • good
    • 0
この回答へのお礼

結果を表記していただき、ありがとうございました。
まさにやりたかった事はこれでした。

皆さんお忙しい中見てくださっているのに、
申し訳ありません。
今後は質問内容が分かるように結果も記載いたします。

お礼日時:2017/04/18 21:16

>同じ行の2行目の文字


これがわからない。
    • good
    • 0
この回答へのお礼

説明不足で申し訳ありません。
表現が乏しすぎました。

お礼日時:2017/04/18 21:12

ご要求の処理が良くわかりません。


なお、検査対象のセル内容を置き換える(書き換える)ことはできません。
検査前と検査後が変わってしまい、処理が成立しなくなるからです。
    • good
    • 0
この回答へのお礼

早速にご回答ありがとうございました。
①の行は ”1””1”をそれぞれ”みかん””バナナ”
②の行は何も入りません。
③の行は数字がずれてますが みかん・リンゴ・バナナと入れかたったのです。

書き換えることはできないのですね。
やはり、一行づつ 「検索する文字列:1」「置き換えする文字列:みかん」
とやっていく方法しかないのでしょうか…。

お礼日時:2017/04/18 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QEXILEのカウント関数について教えて下さい。 40行あるA列に同じ文字をセルに入力。B列には異なる

EXILEのカウント関数について教えて下さい。

40行あるA列に同じ文字をセルに入力。B列には異なる文字をセルに入力。C列にA行とB行を結合した文字を表示しています。
D列にC列の行ごとで同じセルの数をカウントしたいと思っていますが
C列は関数がある為、関数をカウントしてしまいます。D列は、40行全て40と表示してしまいます。表示されてない文字はカウントしない様に出来ないでしょうか。教えて下さい。

Aベストアンサー

No.1です。

数式は2行目に入れているのですね?
>何も表示されてない時に1048575と途方にもない・・・

Excel2007以降では最終行が1048576行目になります。
データがない場合は空白セル数(数式は入っているが空白に見えている)セル数が表示されているものと考えられます。

このような場合はエラー処理が必要になります。
一般的にはIF関数で対処できます。
(エラー処理は色々な場面で出てきます)

D2セルの数式を
=IF(C2="","",COUNTIF(C:C,C2))
としてフィルハンドルで下へコピーしてみてください。
数式の意味
C2セルが空白に見えている場合は何も表示しない、
そうでない場合はC列にあるC2セルの個数を表示
といった感じになります。

※ 厳密にいえば数式が入っているので「空白」ではないのですが
現段階ではこの程度でやめておきます。m(_ _)m

Qエクセル 関数 1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算

1と入力されたセルの隣の列の値から、一つ前に1と入力されたセルの隣の列の値の引き算をしたいです。
具体的に、添付した画像の表で説明します。
A列は、連続した数値が入っています。
B列には、ところどころに、1が入力されています。(空白のセルが多いです。)
C列には、B列で、1と入力されたセル(例:B6)と同じ行のA列のセル(A6)の値から、B列で、一つ前に1と入力されたセル(B2)と同じ行のA列のセル(A2)の値の引き算をしたいです。
いまのところ、C列の結果は、D列にしめしたような計算で、ひとつずつ計算しています。

C列を、自動的におこなってくれるように工夫したいのですが、どんな関数をつかったらよいかわからないので、教えてほしいです。
補足ですが、行の入れ替え(サイズを変える、等)はしたくないです。(列の挿入はもちろんOKです。)

どうぞよろしくお願いします。

Aベストアンサー

D列を作業用に使用します。D列を最終的には見えないように設定してください。(文字色を白にするなど)
D1セルに「=A1*B1」
D2セルに「=IF(B2<>1,D1,A2*B2)」
D3セルより下はD2セルをコピー
C1セルに「=IF(D1=0,"",D1)」
C2セルに「=IF(D1=D2,"",D2-D1)」
C3セルより下はC2セルをコピー

Q2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

Windows XP Home Edition
Office XP Personal 2002
Excel 2002

画像のように、左.xls 右.xls 共に、
1レコードの 「 B列 と C列 」 の値が同じ行のセルを選択したいのですが、
うまく行きません。

画像の例では赤色セルの部分です。
左右のブックの赤色セルの各行番号は同じではありません。
B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

●2つのブックを左右に並べて、
 同じ行データを閲覧したいわけでございます。

何卒、ご教示のほどをお願い致します。

Sub TEST()
Const wBook = "右.xls" '表示させたいBook名
Const wSht = "Sheet1" '表示させたいSheet名
Dim Target As Range
Dim TargetVa As Integer

TargetVa = ActiveWindow.ActiveCell.Value

With Workbooks(wBook).Sheets(wSht)
  For Each Target In .Range("B1", .Range("B65536").End(xlUp))
   If Target.Value = TargetVa Then
    Workbooks(wBook).Activate
    Sheets(wSht).Activate
    Target.Cells.Select

   End If
  Next Target
 End With
End Sub

2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

Windows XP Home Edition
Office XP Personal 2002
Excel 2002

画像のように、左.xls 右.xls 共に、
1レコードの 「 B列 と C列 」 の値が同じ行のセルを選択したいのですが、
うまく行きません。

画像の例では赤色セルの部分です。
左右のブックの赤色セルの各行番号は同じではありません。
B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

●2つのブックを左右に並べて、
 同じ行データを閲覧したいわけでご...続きを読む

Aベストアンサー

>B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

B列には「年/月/日」が記入されていて,書式で日だけ表示している。
Book1.xlsのSheet1に,ある月の日付とデータ(左)がB3から。
Book2.xlsのSheet1に通しのカレンダーの日付とデータ(右)。

Sub macro1()
 Dim s1 As Worksheet
 Dim s2 As Worksheet
 Dim target As Range
 Dim i As Long

 ’シートを指名すれば,親ブックも一緒に付いてくる。
 Set s1 = Workbooks("Book1.xls").Worksheets("Sheet1")
 Set s2 = Workbooks("Book2.xls").Worksheets("Sheet1")

 ’照合の開始位置は左の一番上のデータから
 Set target = s2.Range("B:B").Find(what:=s1.Range("B3").Value, LookIn:=xlFormulas, lookat:=xlWhole)
 If target Is Nothing Then
  MsgBox "base line not match"
  Exit Sub
 End If

 ’日付に漏れが無い前提で,開始位置からC列を照合していく
 For i = 0 To s1.Range("B65536").End(xlUp).Row - 3
  If target.Offset(i, 1).Value = s1.Range("B3").Offset(i, 1).Value Then
   s1.Activate
   s1.Range("B3").Offset(i, 1).Select
   s2.Activate
   target.Offset(i, 1).Select
   Exit Sub
  End If
 Next i
 msgbox "no match data"
End Sub



#別の方法
「フィルタオプションの設定」を使い,左のBC列の全データをクライテリア領域として,右のBC列を絞り込んでヒットした行を結果とする,といった手もあります。
マクロ以前に手動で操作できるので,まずエクセルを操って練習してみましょう。正しく絞り込み出来るようになったら,新しいマクロの記録でマクロを録って参考にしてみると良いです。

>B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

B列には「年/月/日」が記入されていて,書式で日だけ表示している。
Book1.xlsのSheet1に,ある月の日付とデータ(左)がB3から。
Book2.xlsのSheet1に通しのカレンダーの日付とデータ(右)。

Sub macro1()
 Dim s1 As Worksheet
 Dim s2 As Worksheet
 Dim target As Range
 Dim i As Long

 ’シートを指名すれば,親ブックも一緒に付いてくる。
 Set s1 = Workbooks("Book1.xls").Worksheets("Sheet1")
 Set s2 = Workbo...続きを読む

Q【VBA マクロ】条件に合うセルを検索して、その行のD列に0を入力する sheet1のA列に4月〜

【VBA マクロ】条件に合うセルを検索して、その行のD列に0を入力する

sheet1のA列に4月〜3月までの月が入っています。
sheet2のA1には4月〜3月のいずれかの月が入っています。
sheet2のA1をsheet1のA列から検索して、その行のD列へ0を入力したいです。
ご教授お願いします。

Aベストアンサー

前提としてsheet1のA列にある4月〜3月までの月というのはA1~A12までの範囲ですか.それともそれ以降にも4月~3月というのが続くのでしょうか?
というのも1つの方法としてA列の上から順にSheet2のA1と合致しているかを見て,
合っている場合にその行のD列に0を打つなら繰り返し演算で良いと思いましたので(For Nextを使う)


Sub test()
Dim i As Integer
For i = 1 To 12
If Worksheets("Sheet1").Cells(i, 1) = Worksheets("Sheet2").Cells(1, 1) Then
Cells(i, 4) = 0
End If
Next
End Sub


関数なら下記式で同じような事ができますね.
=IF(ISERROR(MATCH(A1,Sheet2!$A$1,0)),"",0)

Qエクセル関数の式を教えてください。 A列(A1~A5206)に同じ名前が2つ以上あったら、同じのF列

エクセル関数の式を教えてください。
A列(A1~A5206)に同じ名前が2つ以上あったら、同じのF列(F1~F5206)に〇をつけたいです。F列にどんな式になりますか?
よろしくお願いします。

Aベストアンサー

こんばんは!

F1セルに
=IF(COUNTIF(A:A,A1)>1,"○","")

としてフィルハンドルでずぃ~~~!っと下へコピーしてみてください。

※ F列の左右どちらかの列(E列かG列)に5206行目まで空白なしに
何らかのデータが入っている場合は
フィルハンドルをダブルクリックするだけでOKです。

※ 「二つ以上」の行すべてに「○」が表示されますが
それで良いのでしょうか?m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報