ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

エクセルの関数で質問です。
値の入ったセルを左に寄せて表示したいのですが、
どうかご教授ください。

   1     2    3    4   5
A リンゴ      キウイ    ライチ

B リンゴ  キウイ ライチ

Aには別表からVLOOKUPで値を返してきています。
関数でBの様に左に寄せる方法はありますでしょうか?

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

A 回答 (5件)

一案です。


A2セルに=IF(COUNTA($A$1:$Z$1)<COLUMN(A1),"",INDEX($A$1:$Z$1,SMALL(IF($A$1:$Z$1<>"",COLUMN($A$1:$Z$1)),COLUMN(A1))))
と入力して、CTRL+SHIT+ENTERで入力してください。
数式の前後に{}がついてセルに入力されます。
これを横方向へコピーしてください。
    • good
    • 2
この回答へのお礼

回答頂きありがとうございます。
早速試してみましたが、希望通りの形にできました。
大変勉強になりました。

お礼日時:2009/05/25 20:07

行番号/列記号の位置が逆転して(るように見え)ますが、シッカリしてくださいね。



   A    B    C    D    E    F
1 リンゴ     キウイ     ライチ
2 リンゴ キウイ ライチ

セル A2 に次の[条件付き書式]を設定
   数式が   =ISERROR(A2)
   フォント色 白
セル A2 に次の配列数式を入力して、此れを右方にズズーッとドラッグ&ペースト
   {=OFFSET($A1,0,SMALL(IF($A1:$Z1="","",COLUMN($A1:$Z1)),COLUMN(A1))-1)}
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
試してみます。

行番号/列記号の位置が逆転して(るように見え)ますが、シッカリしてくださいね。
↑ですね。 実際のタイトルを省略したものを(○○-A等)使ってしまいました。
普通、行番号と列番号ですよね。
くみ取ってご回答頂きありがとうございました。

お礼日時:2009/05/25 20:01

#2です。


式は#2と同じで消して置くこと
例データ
A-F列
aーーbーc
xーーydー
xーzーuf
ーーー
作業エリア
H-M列
1ーー2ー3
1ーー23
1ー2ー34
H1の式 =IF(A1<>"",MAX($G1:G1)+1,"")
横右方向と縦方向に式を複写。
結果
上記
ーー
結果 N列ー
abc#N/A
xyd#N/A
xzuf

N1の式は =INDEX(A1:F1,1,MATCH(COLUMN()-13,H1:L1,0))
横右方向と縦方向に式を複写。
#N/Aを出さないようにするには列がH-Mの最高数を超えていれば空白にするIF関数の式をかぶせる。(略)。
関数ではデータの配置(並べ)替えは、このように面倒です。なんでも関数と思わないこと。
    • good
    • 1
この回答へのお礼

再度ご回答頂きありがとうございます。
なんでも関数と思わないこと
とのご指摘通り関数では少々無理があると感じ、最近マクロを勉強し始めました。
このような質問にご丁寧に回答頂き本当にありがとうございました。

お礼日時:2009/05/25 19:47

先日も回答の結果で、放りだしたが


(1)関数をセルの値に換え、式を消す。形式を選択して貼り付けー値、など
(2)全体範囲を範囲指定して
編集ージャンプーセル選択ー空白セルーOK
これで空白セルが捕まえられた。
(3)DELETE(セルを削除。編集ー削除) 
(4)左方向にシフトーOK
例データ -は空白
a--b-c
x--yd
x-z-u
結果
abc
xyd
xzu
関数ではimogasi方式で出来そうだか、とりあえず操作での回答。
    • good
    • 0
この回答へのお礼

丁寧なご回答頂きありがとうございます。
早速試したところ希望していた形にできました。

お礼日時:2009/05/25 19:40

 


セルの書式設定の中の配置で設定します

 

この回答への補足

回答頂きありがとうございます。
説明不足でした。すみません。
リンゴが表示されているセルの隣は空白のセルです。
さらにその隣のセルにはキウイと表示されていて
その隣は空白です。その隣のセルはライチと表示されており
空白が現れるのはランダムです。VLOOKUPで値を返しており
空白と値は不規則に現れます。
その空白セルを詰めて左に寄せて表示したいのです。
リンゴの隣のセルにはキウイ、そのまた隣のセルにはライチといった感じでできませんでしょうか?

補足日時:2009/05/24 20:54
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

Qエクセル 空白を除き左に詰めたいのですが・・・

度々、お世話になります。。
ある表を作成しているのですが・一行に四個の数字しか入ってないにも関わらず
A~ATまでの間延びした表になってしまいました(泣)
ほかの空白のセルを詰め、A~Dに並べるため、「ジャンプ」という機能を使いました。
が!!!
まず、表を指定しCtri + Gでジャンプ機能へ。
セル選択→空白のセル→O.Kを選択すると・・・

[該当するセルが見当たりません]

と、表示されてしまいます。

上手く空白を除き、左詰めで並べる方法はありませんか?

どうぞ、お知恵を拝借いたしたく、何卒、よろしくお願い申し上げます。

Aベストアンサー

こんばんは!

>[該当するセルが見当たりません]
というコトは数式によって空白に見えるセルがあるのではないでしょうか?

Ctrl+G → 「セル選択」 → 「空白セル」 → OK
としても数式が入っているセルは「空白セル」とはみなされませんので別の方法を考える必要があります。

VBAになりますが、一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim c As Range, myRng As Range
For Each c In ActiveSheet.UsedRange
If c = "" Then
Set myRng = c
Exit For
End If
Next c
If Not myRng Is Nothing Then
For Each c In ActiveSheet.UsedRange
If c = "" Then
Set myRng = Union(myRng, c)
End If
Next c
myRng.Select
End If
End Sub 'この行まで

※ 一気にDeleteして左詰めも可能ですが、セル選択でやめています。
後は手作業で 削除 → 左方向にシフト を行ってみてください。m(_ _)m

こんばんは!

>[該当するセルが見当たりません]
というコトは数式によって空白に見えるセルがあるのではないでしょうか?

Ctrl+G → 「セル選択」 → 「空白セル」 → OK
としても数式が入っているセルは「空白セル」とはみなされませんので別の方法を考える必要があります。

VBAになりますが、一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マ...続きを読む

QEXCEL関数 空白セルを詰める関数

図1の表を図2のようにオートフィルタを使わず表示させる関数で下記を見つけましたが、実際使うときには、番地がA1からの位置ではなくAA60ぐらいの位置でこの関数を実行すると表示されません。
どの部分をその番地にあわせるとよいでしょうか?

<図1>
    A     B
1   あいう
2         えお
3   かきく
4         けこ
5   さしす

<図2>各行の空白セルを詰めて表示させる
    A     B    
10  あいう   えお
11  かきく   けこ
12  さしす
13
14

【関数】

A10: =IF(ROW(A1)>COUNTA(A$1:A$5),"",INDEX(A$1:A$5,SMALL(IF(A$1:A$5<>"",ROW($A$1:$A$5),""),ROW(A1))))

Ctrl + Shift + Enterキーで式を確定します。

右と下にコピーします。

Aベストアンサー

元データがA60から始まっているとすると,

A10に
=IF(ROW(A1)>COUNTA(A$60:A$65),"",INDEX(A$60:A$65,SMALL(IF(A$60:A$65<>"",ROW($A$1:$A$6),""),ROW(A1))))
をコントロールキーとシフトキーを押しながらEnter,下にコピー,右にコピー と直す格好になりますね。




#好みの問題ですが
=IF(ROW(A1)>COUNTA(A$60:A$65),"",INDEX(A:A,SMALL(IF(A$60:A$65<>"",ROW(A$60:A$65),""),ROW(A1))))
をCtrl+Shift+Enterの方が,判りやすいと思います。

QVBAで指定範囲内の空白セルを左詰めで一括削除したいのですが

エクセルで作成した表中に測定結果を集約し、管理しております。
測定を行った際に得られる数値を項目毎に対象列のセルへ集積しているのですが、
測定を行っていない項目のセルは空白となるため、空白セルを左詰めで一括削除したく望んでおります。
下記のようにマクロの記録を使用してコードを取得し、実行してみたのですが、エラーになってしまいます。

Private Sub CommandButton1_Click()

Sheets("A").Select
Range("B:AH").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select

End Sub

対象範囲(列)はB列からAH列としておりますが、測定項目が増えると記載列も増えますので、
範囲を柔軟に変更出来るような方法で希望しております。

お手数ですがご教授いただけませんでしょうか?

宜しくお願い致します。

エクセルで作成した表中に測定結果を集約し、管理しております。
測定を行った際に得られる数値を項目毎に対象列のセルへ集積しているのですが、
測定を行っていない項目のセルは空白となるため、空白セルを左詰めで一括削除したく望んでおります。
下記のようにマクロの記録を使用してコードを取得し、実行してみたのですが、エラーになってしまいます。

Private Sub CommandButton1_Click()

Sheets("A").Select
Range("B:AH").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
...続きを読む

Aベストアンサー

提示されたコードでは、実行エラー(RangeクラスのSelectメソッドが失敗しました)に
なりますね。

Private Sub CommandButton1_Click()
Sheets("A").Range("B:AH").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
End Sub
とか?

>対象範囲(列)はB列からAH列としておりますが、測定項目が増えると記載列も増えますので、
>範囲を柔軟に変更出来るような方法で希望しております。
求める結果がわからなかったです。

Qエクセルで左寄せ かつ 空間をあける

エクセルで左寄せ かつ 空間をあける

タイトル通りのことをしたいのですが
セルの中に文字を書き 左寄せの項目にチェックすれば
左寄せで文字をのせることができますが それだと左によりすぎています
少し空間を入れるために文字の左端にスペースキーでスペースをいれたのですが
この作業を全ての列、行でしなければいけないとなると大変なんです
左寄せ かつ 空間をあける という作業はこのやりかた以外にもできるんでしょうか?

Aベストアンサー

データの入るセル範囲をまとめて選んでから。

方法1
書式メニューのセルの書式の配置で
 横位置を左詰め(インデント)
 インデントを+1する

方法2
書式メニューのセルの表示形式のユーザー定義で
_ @
(アンダーバー,スペース,アットマーク)
とか設定してみる。


#左寄せは良いのですが,そのセルに具体的にどんな中身を入れる予定なのかで,ちょっと調整が要るかもしれません。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルでセルを一括で右詰にする方法はありますか?

|あ|い|う|え|
|か|き|く| |
|さ|し| | |
|た|ち|つ|て|

上記のように4行4列のセルが並んでいるとして、
これを
|あ|い|う|え|
| |か|き|く|
| | |さ|し|
|た|ち|つ|て|
のように右詰したいと思ってます。
このデータが200件ほどあり、
できれば自動でできればと思ってますが、
エクセルにはこういった機能はありますでしょうか?

あるいはテキストで正規表現を使ったやり方で、
csv形式で上記のような形にする方法でもかまいません。

お知恵をお貸しください。
よろしくお願いいたします。

Aベストアンサー

いちばん右から考えてみた
I1セル
=IF(A1="","",INDEX($A1:$D1,COUNTA($A1:$D1)))

次に右から2番目を考えるときは、右のデータの個数をひいてみた
H1セル
=IF(COUNTA(I1:$I1)>=COUNTA($A1:$D1),"",INDEX($A1:$D1,COUNTA($A1:$D1)-COUNTA(I1:$I1)))
左へオートフィル

F1:I1セル範囲を下へオートフィル

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Qエクセル TEXT関数を使うと左揃えになってしまう

エクセル2003です。

Text関数を使うと左揃えになってしまうのですが、
標準と同じ右揃えになる方法は有りますでしょうか。

具体的には
A列が”EUR”の時、B列の数字 “#,##0.00”
A列が”JPY”の時、B列の数字”#,##0”
という式をIF関数とTEXT関数を使用して作ったのですが
全て左揃えになってしまうので困っています。
条件つき書式でも右揃えというのはありませんし、、、困っています。

何か解決策があればと思い質問しました。
宜しくお願いします。

Aベストアンサー

おそらくは次のような式をB列で使っているのでしょう。
=IF(A1="EUR",TEXT(式,"#,##0.00"),IF(A1="JPY",TEXT(式,"#,##0"),""))
TEXT関数を使った場合には、その答えはすべて文字列として扱われますので、セルの左側に表示されます。これを右側に表示したい場合には文字列ではなく数値として認識させることが必要です。このためには例えば1を掛けるなどの方法をとります。
=IF(A1="EUR",TEXT(式,"#,##0.00")*1,IF(A1="JPY",TEXT(式,"#,##0")*1,""))

Qエクセルの参照結果を空欄を詰めて表示させたい

エクセルの入門書などによくある学校の成績表で、縦軸B3からB25までに氏名、横軸C3からCQまで科目名があるとします。
このJの列にある科目で100点を取った生徒のみを別シートのB28から縦に順番に表示させたいです。

基本的な関数を使って、100点を取った人のみ抽出して表示させることはできるのですが、空欄を詰めて順に表示させることができず困っております。
よろしくお願いします。

Aベストアンサー

 もし、A列等に出席番号等の「同じ列の中に、同じ値が複数入力されている事があり得ないデータ」が入力されている場合には、次の様な方法もあります。

 今仮に、

>エクセルの入門書などによくある学校の成績表で、縦軸B3からB25までに氏名、横軸C3からCQまで科目名があるとします。

の成績表が存在しているシートのシート名がSheet1であり、Sheet2に「Sheet1のJの列にある科目」で100点を取った生徒のデータのみを表示させるものとします。

 まず、Sheet2のA27セルに次の関数を入力して下さい。

=Sheet1!$A$2

 次に、Sheet2のA28セルに次の関数を入力して下さい。

=IF(ROWS($28:28)>COUNTIF(Sheet1!$J:$J,"=100"),"",INDEX(INDEX(Sheet1!$A:$A,MATCH(A27,Sheet1!$A:$A,0)+1):INDEX(Sheet1!$A:$A,ROWS(Sheet1!$A:$A)),MATCH(100,INDEX(Sheet1!$J:$J,MATCH(A27,Sheet1!$A:$A,0)+1):INDEX(Sheet1!$J:$J,ROWS(Sheet1!$A:$A)),0)))

 次に、Sheet2のB28セルに次の関数を入力して下さい。

=IF($A28="","",VLOOKUP($A28,Sheet1!$A:$B,2,FALSE))

 次に、Sheet2のA28~B28の範囲をまとめてコピーして、Sheet2のA29~B51の範囲に貼り付けて下さい。

 以上です。


 因みに、もし、生徒の中に同姓同名の生徒が存在しない事が保障されている場合には、A列を表示させる事なしに、Sheet2のB28セルに次の様な関数を入力してから、Sheet2のB28セルをコピーして、Sheet2のB29~B51の範囲に貼り付けるだけで済みます。(Sheet2のB27セルに、Sheet1のB2セルと同じ値を入力しておく必要はあります)

=IF(ROWS($28:28)>COUNTIF(Sheet1!$J:$J,"=100"),"",INDEX(INDEX(Sheet1!$B:$B,MATCH(B27,Sheet1!$B:$B,0)+1):INDEX(Sheet1!$B:$B,ROWS(Sheet1!$B:$B)),MATCH(100,INDEX(Sheet1!$J:$J,MATCH(B27,Sheet1!$B:$B,0)+1):INDEX(Sheet1!$J:$J,ROWS(Sheet1!$B:$B)),0)))

 もし、A列等に出席番号等の「同じ列の中に、同じ値が複数入力されている事があり得ないデータ」が入力されている場合には、次の様な方法もあります。

 今仮に、

>エクセルの入門書などによくある学校の成績表で、縦軸B3からB25までに氏名、横軸C3からCQまで科目名があるとします。

の成績表が存在しているシートのシート名がSheet1であり、Sheet2に「Sheet1のJの列にある科目」で100点を取った生徒のデータのみを表示させるものとします。

 まず、Sheet2のA27セルに次の関数を入力して下さい。

=Sheet1!$...続きを読む


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

人気Q&Aランキング