痔になりやすい生活習慣とは?

いつもお世話になります。

エクセルのシート名の入力について質問です。
「A1」に「あああ」と入力したらシート1の
名前が「あああ」となるようにしたい。
さらに「B1」に「いいい」と入力したらシート2の
名前が「いいい」となるようにしたい。
この質問が↓近いのですが、A1のみ?
http://oshiete1.goo.ne.jp/qa2025849.html

A1、B1、C1・・・・もしくは、A1、A2、A3・・・と
行で続いても列で続いてもいいのですが・・・

更にもう一つ質問がございます。
別のシートに連番を割り振ることは、可能でしょうか?
例えばシート1~シート20まで有るとします。
シート1のセルA5に「101」と数字を入力し
シート2のセルA5には「102」、シート3のセルA5には「103」と
連番を一挙にコピーできますでしょうか?

どうぞ宜しくお願い致します。

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

A 回答 (4件)

A1、B1、C1…に入力された値をシート名にするマクロです。


シート名を入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください。シートに戻り値を入力するとシート名が変わります。
入力した列に対応するシートがないときや、シート名に使用できない値を入力したときはエラー表示しています

Private Sub Worksheet_Change(ByVal Target As Range)
 On Error GoTo err0
 If Target.Row = 1 Then
  If Target.Column > Worksheets.Count Then
   MsgBox ("対応するシートがありません")
  Else
   Worksheets(Target.Column).Name = Target.Text
  End If
 End If
 Exit Sub
err0:
 MsgBox ("入力したシート名が不適切です")
End Sub

以下は後半部分のマクロです。こちらのマクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名(Macro2)を選択して実行します。(実行は手動です。値を入れても自動では動きません)

連番の開始値を入力するシート名、セルアドレスは実際のものに変更してください。なお連番は整数値を想定しています。

Sub Macro2()
Dim idx, cnt As Integer
Const sh As String = "aa" '連番のスタートを入力するシート
Const adr As String = "A5" '連番を入力するセル
 If IsNumeric(Sheets(sh).Range(adr).Value) Then
  cnt = Sheets(sh).Range(adr).Value
  For idx = 1 To Worksheets.Count
   If Sheets(idx).Name <> sh Then
    cnt = cnt + 1
    Sheets(idx).Range(adr).Value = cnt
   End If
  Next idx
 Else
  MsgBox ("開始値が数値ではありません")
 End If
End Sub

でも質問の内容は「例えばこのセルに値を入力したら」という書き方ですから、たぶんこのままでは使えないかもしれませんね。その場合はご自身で修正をお願いします。

この回答への補足

回答ありがとうございます。

A1,A2,A3・・・と入力していく
場合には、どのようにすれば
よろしいでしょうか?

補足日時:2007/05/02 15:11
    • good
    • 7

これは、マクロという機能を使用します。


マクロとは、特定の操作手順を登録しておいて自動化する機能だと思って下さい。
今回のケースだと、A1の内容をシート1の名前に、B1の内容を・・・と、繰り返し行う処理を登録しておいて、一括処理するということです。

プログラムの記述にはVisual Basic Ediorを使います。
対象のファイルを開き、「ツール→マクロ→Visual Basic Edior」
これでEditor画面が開きます。

次に、editor画面の「挿入→標準モジュール」
これで記述するメモ帳のようなものが表示されます。

Sub シート名入力
と入力し、Enterを押してください。自動で、End Subと表示されます。
Sub ~ End Sub の間に、先ほどのプログラムを入力して下さい。
連番入力も同じように行って下さい。

次に、Editor画面を閉じます。
Excelの通常の画面に戻ったら、「ツール→マクロ→マクロ」
シート名入力と、連番入力が表示されているので、任意の題名を選び、実行。

これで完成です。
    • good
    • 5

No1の者です。

補足です。

(1)シート名の入力
使えない文字列が含まれる可能性がある場合には、エラー処理も必要になるので注意して下さい。

(2)連番入力
10 & i ですと、101~109までしか使えません。
100 + i の方が良いです。
    • good
    • 4

シート名の入力



Dim i As Integer

For i = 1 To Worksheets.Count

If ActiveSheet.Cells(1, i) <> "" Then
Sheets(i).Name = ActiveSheet.Cells(1, i)
Else
Exit For
End If

Next i



連番入力

For i = 1 To Worksheets.Count

Sheets(i).Range("A5") = 10 & i

Next i

この回答への補足

この内容をどの画面でどのように入力すれば良いのか
解りません。
操作方法を教えていただけますでしょうか?

補足日時:2007/05/02 12:28
    • good
    • 2

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

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

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

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

Qエクセル:シート名を手入力でなく、セル「A1」の文字を出したい。

いつもお世話になります。
エクセルのシート名についての質問です。
いつもはシート名を変えるとき、シートタブの上を右クリックして「変更」しています。

◆そこで、
(1) セル「A1」に入力されてある文字を自動で出す
(2) もしくはマクロボタンを押すと「A1」に入力されてあるものが「シート名」として変わる

というようにしたいのですが、その方法について教えてください。よろしくお願いいたします。

Aベストアンサー

こんにちは。


(1)の場合は、下記のコードを ThisWorkbook に記述してください。
どのワークシートでも機能します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$A$1" Then Sh.Name = Target.Range("A1").Value
End Sub


(2)場合は、下記のコードを標準モジュールに記述しボタンにマクロ登録してください。
(すべてのシートにボタンを貼り付けるのは面倒でしょうから、ツールバーにボタンとして追加すると良いと思います。)

Public Sub SheetName()
ActiveSheet.Name = Range("A1").Value
End Sub

QExcelの各シートに自動的に名前をつけられませんか?

Excelの各シートのタグというんでしょうか(最初にsheet1とかになっている部分です)、ここにそのシート内にある所定のセルの内容をそのまま表示する方法ってありますか?

具体的にいうと、人事の個人別異動履歴等を個人ごとのシートで管理したいんです。
例えば、各シートのA1のセルに社員コードを入れるようにするとして、シート名を自動的にその番号にできないかと思っているんです。
可能でしょうか?
よろしくお願いします。

Aベストアンサー

#4です。お礼の中に記された
>各シートの同じセルにあるデータをそのシートの名前にしたいんです。
この方が簡単です。
Sub test01()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
' MsgBox ws.Name
' MsgBox ws.Range("a1")
ws.Name = ws.Range("a1")
Next
End Sub
で出来ました。

Qエクセルのシート間で連続した日付データを作りたい

オートフィル機能をシート間の串刺しでやりたいと考えています。
現在、日付ごとに1日から31日までの31枚のシートがあります。
1枚目のシートのA1セルに1月1日と入力すると、その後30枚のシートのセルA1にそれぞれ1月2日~31日までの日付が自動で表示できるようにしたいのですが、どのようにすれば楽に処理できるのでしょうか?
なお、A2セルには曜日も表示させる予定です。
ご存じの方がいらっしゃいましたら、ぜひお知恵を拝借させて下さい。

Aベストアンサー

マクロで対応するならこんな感じでできます。
Alt+F11でVBEを起動して、「挿入」「標準モジュール」でこのコードを貼り付けで、エクセルで「ツール」「マクロ」からこのコードを実行してください。

Sub sample()
Dim i As Integer
For i = 1 To 30
Sheets(i + 1).Range("a1").Value = Sheets(i).Range("a1").Value + 1
Next i
End Sub


ちなみに曜日のほうは、一番左のシートを選択し、Shiftキーを押しながら一番右のシートを選択して作業グループにしてB1セルに「=A1」と入力してセルの書式設定でユーザー定義で「aaaa」などとしてください。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

QEXCEL シート名を自動変更するマクロ

いつも御世話になっています。

質問内容ですが、特定セルに入力した値を特定のシート名に反映させるマクロについてです。

例えば、
Sheet1のセルA1に「会議室」と入力した場合、Sheet5のシート名が「会議室」となり、
Sheet1のセルA2に「休養室」と入力した場合、Sheet7のシート名が「休養室」となる。
というようなものです。
(※Sheet番号は連番になっていません)

なお、シート名変更用の入力シートはSheet1のみです。

できれば、各シート名を変更する際、以下のようにしたいと考えています。

Sheet5 元シート名:負荷計算(1)
           ↓
Sheet5 変更後シート名:"Sheet1のA1で入力した名前" 負荷計算
  



教えて頂けると助かります。
宜しくお願いします。

Aベストアンサー

こんにちは!
一例です。

>(※Sheet番号は連番になっていません)
とありますが、Sheet見出し上で左からSheet1・Sheet2・・・の順とします。
すなわちSheet5はSheet見出しで左から5番目のSheet
Sheet7は左から7番目のSheetという前提です。

画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてSheet1のA1・A2セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long, myFlg As Boolean
If Application.Intersect(Target, Range("A1:A2")) Is Nothing Or Target.Count <> 1 Then Exit Sub
On Error Resume Next
With Target
For k = 1 To Worksheets.Count
If Worksheets(k).Name = .Value Then
myFlg = True
Exit For
End If
Next k
If myFlg = True Then
MsgBox "シート名が重複します。" & vbCrLf & "別のシート名を入力してください。"
.Value = ""
.Select
Exit Sub
Else
If .Address = "$A$1" Then
Worksheets(5).Name = .Value
Else
Worksheets(7).Name = .Value
End If
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんにちは!
一例です。

>(※Sheet番号は連番になっていません)
とありますが、Sheet見出し上で左からSheet1・Sheet2・・・の順とします。
すなわちSheet5はSheet見出しで左から5番目のSheet
Sheet7は左から7番目のSheetという前提です。

画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてSheet1のA1・A2セルにデータを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long, myFlg As Boolean
I...続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

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

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qエクセルで、セルの日付をシート名にしたい

セルA1に、別のブックのセルから=の式で引張って来た日付表示のデータ(H19.10.10)が入っています。
その日付を常にそのシート名に反映させるにはどうしたら良いでしょうか?宜しくお願いします。

Aベストアンサー

こんばんは。

>参照元のデータが更新されると同時にシート名も変わるといいのですが・・・。
もちろん、こういう方法もできますが、イベントというのは、常に、マクロを待機状態にしているわけですから、負担が大きくなります。おまけに、こういう大元のオブジェクトのプロパティを頻繁に、シート名を換えるような内容は、ブックを壊す原因にもなりますから、できる限り気をつけて扱ってください。

本来は、自分が明示的に行う、一般プロシージャのほうがよいです。
自動的に行うのは、リスクが高いです。


ThisWorkbook に貼り付けてください。

Application.Undo '設定を戻す は、不要だったら抜いてください。
単独にこのプロシージャだけでよいです。

以下のマクロの日付値は、ワークシートに Text 関数はお使いにはならないでください。シリアル値を入れ、書式で設定してください。

二つのマクロは、絶対に同時に使わないでください。片方だけにしてください。無限ループになる可能性があります。

---------------------------------------------------------------

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim myDate As String
  If Target.Address <> "$A$1" Then Exit Sub
  On Error GoTo ErrHandler
  If IsDate(Target.Text) Then
    myDate = Format$(Target.Value, "GEE.M.D")
    If Sh.Name <> myDate Then
      Sh.Name = myDate
    End If
  End If
  Exit Sub
ErrHandler:
  MsgBox Sh.Name & "のシート名の変更はできませんでした。", 32
  Application.Undo '設定を戻す
End Sub
-----------------------------------------------------------------
トラブルに責任は持ちませんが、以下のようにすれば可能です。
こちらは、ActiveWindow になっていなくとも設定されますから、エラーを吐きません。シート名が変わらない場合は、シート名が同じかエラーが発生しています。

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  Dim myDate As String
  Dim sht As Worksheet
  On Error Resume Next
  Application.EnableEvents = False
  For Each sht In ThisWorkbook.Worksheets
    If IsDate(sht.Range("A1").Text) Then
      myDate = Format$(sht.Range("A1").Value, "GEE.M.D")
      If sht.Name <> myDate Then
        sht.Name = myDate
      End If
    End If
  Next sht
  Application.EnableEvents = True
  On Error GoTo 0
End Sub

こんばんは。

>参照元のデータが更新されると同時にシート名も変わるといいのですが・・・。
もちろん、こういう方法もできますが、イベントというのは、常に、マクロを待機状態にしているわけですから、負担が大きくなります。おまけに、こういう大元のオブジェクトのプロパティを頻繁に、シート名を換えるような内容は、ブックを壊す原因にもなりますから、できる限り気をつけて扱ってください。

本来は、自分が明示的に行う、一般プロシージャのほうがよいです。
自動的に行うのは、リスクが高いです。...続きを読む

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既存の複数のシート名を一括変換するには

既存のシート名「sheet1」、「sheet2」、「sheet3」……に、「原稿1」、「原稿2」、「原稿3」……と、エクセルマクロを使って一括で変換したいと思っています。

シートからシート名を抜き出すのはありますが、その逆のものは探しても見当たりませんでした。
どなたか教えていただけると助かります。

できれば、同じファイルの別シート(シート名一覧)に書いたものが、各シート名になると嬉しいです。

Aベストアンサー

シート名「シート名一覧」のA1セルにシート名一覧と記入し,A2セルから下向けに新しいシート名が列記してあるとします。無駄にややこしくしないため,とりあえず暫定的に新しいシート名は現在のシート枚数に過不足無く並べてあるとします。

ところで新しいシート名を一覧しておくのは良いのですが,それが一体「今現在どの名前のシート用の新しい名前なのか」の対応について,どうしたいのか説明が足りてません。
とりあえず「シート名一覧」シートをシート名タブの並びの「一番左」に配置して,2枚目のシートから順に名前を付け替えていくことにしてみます。


作成例:
sub macro1()
 dim i
 on error resume next
 for i = 2 to worksheets.count
 worksheets(i).name = worksheets("シート名一覧").cells(i-1, "A")
 next i
end sub




#あなたが見つけた「シート名一覧を書き出すマクロ」を参考にすれば,それをつかって今現在のシート名一覧をまず並べさせ,その順番で「新しい名前」を列記して見つけたマクロの裏返しでシート名をつけさせる(シート名を書き換えるという具体的なマクロは,上述を参考にします)ことでも出来そうですね。

シート名「シート名一覧」のA1セルにシート名一覧と記入し,A2セルから下向けに新しいシート名が列記してあるとします。無駄にややこしくしないため,とりあえず暫定的に新しいシート名は現在のシート枚数に過不足無く並べてあるとします。

ところで新しいシート名を一覧しておくのは良いのですが,それが一体「今現在どの名前のシート用の新しい名前なのか」の対応について,どうしたいのか説明が足りてません。
とりあえず「シート名一覧」シートをシート名タブの並びの「一番左」に配置して,2枚目のシートか...続きを読む


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

人気Q&Aランキング